История изменений
Исправление lovesan, (текущая версия) :
Всё ж стоит определиться, что первично.
Диалекты лиспа называются … Lisp. Когда делается другой язык, название берется другое. Даже если что-то там от лиспа есть.
А что? Что делает его лиспом, а схему не лиспом?
Да наличие специальных операторов, базовых структур данных, и функций которые тянутся прямо из первых диалектов лиспа - из MacLisp какого-нибудь. Вон как пример - true и false в схеме. Это из самого простого. В лиспе нет true и false. В лиспе есть «generalized boolean», когда символ nil, он же пустой список - это одновременно false, а все остальное - true.
Далее, динамические переменные. В ранних лиспах только одни они и были вообще(вот оттуда они в Emacs Lisp). В поздних лиспах типо CL, они скорее используются как исключение чем как правило, но они есть.
Названия макросов и функций. Всякие там defun, mapcar, nreverse и прочее. Макросы. В лиспе они другие.
Глобальная область видимости. В схеме она статическая, в лиспе - динамическая. Схема и ее потомки, типа racket - не нацелены на «разработку в образе», вообще.
Дохренища всего такого.
Clojure - еще дальше от лиспа, чем Scheme, это вообще другой язык, это не Лисп. А то так можно договориться что Python это лисп. Или до того что Java это Си.
Исправление lovesan, :
Всё ж стоит определиться, что первично.
Диалекты лиспа называются … Lisp. Когда делается другой язык, название берется другое. Даже если что-то там от лиспа есть.
А что? Что делает его лиспом, а схему не лиспом?
Да наличие специальных операторов, базовых структур данных, и функций которые тянутся прямо из первых диалектов лиспа - из MacLisp какого-нибудь. Вон как пример - true и false в схеме. Это из самого простого. В лиспе нет true и false. В лиспе есть «generalized boolean», когда символ nil, он же пустой список - это одновременно false, а все остальное - true.
Далее, динамические переменные. В ранних лиспах только одни они и были вообще(вот оттуда они в Emacs Lisp). В поздних лиспах типо CL, они скорее используются как исключение чем как правило, но они есть.
Названия макросов и функций. Всякие там defun, mapcar, nreverse и прочее. Макросы. В лиспе они другие.
Глобальная область видимости. В схеме она статическая, в лиспе - динамическая. Схема и ее потомки, типа racket - не нацелены на «разработку в образе», вообще.
Дохренища всего такого.
Clojure - еще дальше от лиспа, чем Scheme, это вообще другой язык, это не Лисп. А то так можно договориться что Python это лисп. Или до того что C# это Си.
Исправление lovesan, :
Всё ж стоит определиться, что первично.
Диалекты лиспа называются … Lisp. Когда делается другой язык, название берется другое. Даже если что-то там от лиспа есть.
А что? Что делает его лиспом, а схему не лиспом?
Да наличие специальных операторов, базовых структур данных, и функций которые тянутся прямо из первых диалектов лиспа - из MacLisp какого-нибудь. Вон как пример - true и false в схеме. Это из самого простого. В лиспе нет true и false. В лиспе есть «generalized boolean», когда символ nil, он же пустой список - это одновременно false, а все остальное - true.
Далее, динамические переменные. В ранних лиспах только одни они и были вообще(вот оттуда они в Emacs Lisp). В поздних лиспах типо CL, они скорее используются как исключение чем как правило, но они есть.
Названия макросов и функций. Всякие там defun, mapcar, nreverse и прочее. Макросы. В лиспе они другие.
Глобальная область видимости. В схеме она статическая, в лиспе - динамическая. Схема и ее потомки, типа racket - не нацелены на «разработку в образе», вообще.
Дохренища всего такого.
Clojure - еще дальше от лиспа, чем Scheme, это вообще другой язык, это не Лисп. А то так можно договориться что Python это лисп.
Исходная версия lovesan, :
Всё ж стоит определиться, что первично.
Диалекты лиспа называются … Lisp. Когда делается другой язык, название берется другое. Даже если что-то там от лиспа есть.
А что? Что делает его лиспом, а схему не лиспом?
Да наличие специальных операторов, базовых структур данных, и функций которые тянутся прямо из первых диалектов лиспа - из MacLisp какого-нибудь. Вон как пример - true и false в схеме. Это из самого простого. В лиспе нет true и false. В лиспе есть «generalized boolean», когда символ nil, он же пустой список - это одновременно false, а все остальное - true.
Далее, динамические переменные. В ранних лиспах только одни они и были вообще(вот оттуда они в Emacs Lisp). В поздних лиспа типо CL, они скорее используются как исключение чем как правило, но они есть.
Названия макросов и функций. Всякие там defun, mapcar, nreverse и прочее. Макросы. В лиспе они другие.
Глобальная область видимости. В схеме она статическая, в лиспе - динамическая. Схема и ее потомки, типа racket - не нацелены на «разработку в образе», вообще.
Дохренища всего такого.
Clojure - еще дальше от лиспа, чем Scheme, это вообще другой язык, это не Лисп. А то так можно договориться что Python это лисп.