Каковы основные различия между Emacs Lisp и Common Lisp?
Я хочу изучить язык lisp, так как мой редактор emacs, я предпочитаю emacs lisp.
Может ли кто-нибудь дать мне несколько советов, чтобы узнать lisp, emacs lisp или общий lisp?
Каковы основные различия между этими двумя?
Ответ 1
Здесь довольно много кроссовера, особенно на уровне новичка, поэтому в зависимости от того, что вы начнете, в основном переносятся на другой.
Некоторые из основных отличий:
elisp традиционно применяет правила динамической оценки; Common Lisp использует лексические правила определения области. При динамическом масштабировании функция может обращаться к локальным переменным, объявленным в вызывающих функциях, и, как правило, не соответствует требованиям. Emacs имеет форму lexical-let, которая имитирует лексическое охват, а последние версии emacs допускают возможность лексического охвата на основе функциональных функций.
elisp не имеет замыканий, что затрудняет выполнение композиционных функций и каррирование. Там есть функция apply-partially, которая работает аналогично currying. Обратите внимание, что форма lexical-let, введенная в Emacs 24, позволяет производить замыкания посредством лексического охвата.
Большая часть общей библиотеки Lisp, которая была создана с течением времени, недоступна в elisp. Подмножество предоставляется пакетом elisp cl
elisp не выполняет оптимизацию хвостового вызова.
Ответ 2
Эти страницы Emacs-Wiki предлагают некоторую информацию о связи между двумя Lisps и их различиями: