Question

J'ai essayé de comprendre la différence entre Lisp-1 et Lisp-2 et comment cela se rapporte à Clojure mais je ne comprends toujours pas correctement. Quelqu'un peut-il me éclairer?

Était-ce utile?

La solution

Selon wikipedia :

  

Si un espace de noms séparé pour les fonctions est un avantage est une source de discorde dans la communauté Lisp. Il est généralement désigné sous le nom Lisp-1 par rapport à un débat Lisp-2. Lisp-1 fait référence au modèle de schéma et Lisp-2 fait référence au modèle de Common Lisp.

Il est essentiellement de savoir si les variables et les fonctions peuvent avoir le même nom sans se heurter. Clojure est un sens Lisp-1 qui ne permet pas le même nom à utiliser pour une fonction et une variable simultanément .

Autres conseils

Vous pourriez à lire papier par Richard Gabriel. Il est un résumé des questions que la communauté Lisp discutaient dans Lisp1 vs Lisp2. Il est un peu dense et se déplaçant lentement dans les premières sections, mais il est beaucoup plus facile à lire le temps que vous avez passé la section 5.

En fait, Lisp1 dispose d'un environnement unique qui associe des symboles à des valeurs, et ces valeurs peuvent être « régulière » ou fonctions. Lisp2 a (au moins) deux espaces de noms (symboles ont une fente pour leur valeur de fonction et une pour une valeur normale). Ainsi, Lisp2, vous pouvez avoir une fonction nommée foo et une valeur nommée foo, alors que dans Lisp1, le nom foo peut se référer uniquement à une seule valeur (fonction ou autre).

Il y a plusieurs compromis et les différences de goût entre les deux, mais lisez le papier pour les détails. Le livre de Christian Queinnec, « Lisp en petits morceaux » a également discuté des différences tissées dans le texte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top