Iotaは、1つのコンビネータしか使用しない、ばかげた小さな「プログラミング言語」です。どのように動作するかを理解することに興味がありますが、私が慣れ親しんでいる言語で実装されていることを確認すると役に立ちます。HaskellでIotaを実装する
Schemeで書かれたIotaプログラミング言語の実装が見つかりました。私はハスケルにそれを翻訳するのに少し問題があった。むしろ単純ですが、私はHaskellとSchemeの両方に対して比較的新しいものです。
Haskellに相当するIOTA実装をどのように記述しますか?
(let iota()
(if (eq? #\* (read-char)) ((iota)(iota))
(lambda (c) ((c (lambda (x) (lambda (y) (lambda (z) ((x z)(y z))))))
(lambda (x) (lambda (y) x))))))
ハスケルには同等の実装はありません。そのような実装はtypecheckをしません。もちろん、別の戦略を使用して実装を記述することは可能です。 –
はい、私はそれがタイプチェックをしないことを知っています。私は、この実装で何が(iota)(iota)がやっているのか理解していると思います。 –