質問

LISP-1とLISP-2の違いと、これがClojureとどのように関連するかを理解しようとしましたが、まだ適切に理解していません。誰かが私を啓発できますか?

役に立ちましたか?

解決

によると ウィキペディア:

機能の別の名前空間が利点であるかどうかは、LISPコミュニティの競合の源です。通常、LISP-1対LISP-2の議論と呼ばれます。 LISP-1はスキームのモデルを指し、LISP-2は一般的なLISPのモデルを指します。

それは基本的に、変数と関数が衝突せずに同じ名前を持つことができるかどうかについてです。 ClojureはLISP-1です つまり、同じ名前を機能と変数に同時に使用することを許可しないことを意味します。

他のヒント

あなたはこれを読みたいかもしれません 論文 リチャード・ガブリエル。これは、LISPコミュニティがLISP1対LISP2で議論していた問題の要約です。最初のいくつかのセクションでは、少し密度が高く、動きが遅くなりますが、セクション5を過ぎるまでに読みやすくなります。

基本的に、LISP1にはシンボルを値にマッピングする単一の環境があり、それらの値は「通常」または関数のいずれかです。 LISP2には(少なくとも)2つの名前空間があります(シンボルには、機能値のスロットがあり、1つは通常の値に1つあります)。したがって、lisp2では、fooという名前の関数とfooという名前の値を持つことができますが、lisp1では、fooという名前は単一の値(関数またはその他)のみを参照できます。

2つの間にはいくつかのトレードオフと味の違いがありますが、詳細については論文を読んでください。 Christian Queinnecの本「Lisp in Small Pieces」も、テキストを通して織り込まれた違いについて議論しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top