2010-11-09 2 views
2

Можно создать дубликат:
Is Clojure closer to Scheme or Common Lisp from a beginner's perspective?Рассматривается ли Clojure Lispy или Schemey?

Clojure является диалектом Lisp, который работает на JVM.
Рассматривается ли Clojure Lispy или Schemey?
Я имею в виду, это похоже на Лисп или как на Схему?

+3

То же, что и [Clojure ближе к Scheme или Common Lisp с точки зрения новичка? ] (http://stackoverflow.com/questions/1412981/is-clojure-closer-to-scheme-or-common-lisp-from-a-beginners-perpective). –

+3

Если вы имели в виду Common Lisp, когда вы написали «Lisp», это дубликат, как указал @Matthew.Если вы имели в виду что-то еще, объясните, потому что Scheme является Lisp, и поэтому нет смысла проводить различие между Lisp и Scheme. – sepp2k

ответ

12

Если под «Lispy» вы имеете в виду «как Common Lisp», а затем ...

Clojure является «Lispy», потому что он имеет полные (nonhygienic) макросы и не гарантирует оптимизацию хвостового вызова (за исключением recur).

Clojure - это «Schemey», потому что у него есть одно пространство имен для обеих функций и значений (это Lisp-1).

+0

Схема не имеет полной (негигиеничной) и гарантирует оптимизацию хвостового вызова? – Chiron

+0

Кроме того, можно ли сказать, что Clojure сочетает в себе лучшие функции из двух миров (Common Lisp и Scheme)? – Chiron

+4

@ El Gusto Совсем нет. Clojure не хватает большинства «лучших» функций от Scheme, таких как полностью гигиенические макросы, правильная оптимизация хвостового вызова, первоклассные продолжения и т. Д. – erjiang

10

Лисп имеет в основном два значения:

  • Лисп является семейство языков программирования, начиная с оригинального Lisp в 1958 году

В этом смысле схема, Clojure, Emacs Lisp, Common Lisp , Логотип, ... все несколько «Lispy».

  • Lisp - это семейство языков с одной основной ветвью: Lisp, Lisp 1.5, MacLisp, Lisp Machine Lisp, Common Lisp.

Можно увидеть, что можно использовать десятилетний код Lisp с очень небольшими изменениями в Common Lisp.

В этом представлении ни схема, ни Clojure не являются особыми «Lispy», поскольку они широко несовместимы с «главной ветвью» и с историческим Lisp.

Clojure - это новый диалект Лиспа, который в большинстве своем несовместим со всеми другими Lisps, а также с историческим Lisp. Имена функциональности, идентификаторы, синтаксис и т. Д. Все разные. На мой взгляд, это так же далеко от CL, как и от Scheme.

5

Когда люди говорят «Схемы», они имеют тенденцию означать «Лисп-1» против «Лисп-2», что исторически является отличием. Clojure - это схема.

Но помимо тех, Clojure стилистически больше напоминает очень современные чувствительные ощущения. Вероятно, самым известным предшественником clojure в этом современном стиле является Arc. Во всяком случае, Clojure является дуговым: он предпочитает конструкции с уменьшенной глубиной вложенности (см. Clojure и arc let vs. common lisp или schem let); оба являются отличными временем выполнения, вложенными в более крупные, более общие периоды интерпретатора, которые предоставляют большую библиотеку бесплатно; и оба значения краткости в именах, в отличие от безумно длинных имен в общей спецификации lisp (например, с множественным значением-bind).

Clojure is arc-ish.

+0

иначе может быть – nickik

Смежные вопросы