web-dev-qa-db-ja.com

EmacsLISPとCommonLispの主な違いは何ですか?

私はLISP言語を学びたいと思っています。私のエディターはemacsなので、emacsLISPが好きです。

LISP、emacs LISP、またはcommon lispを学ぶための提案を誰かに教えてもらえますか?

これら2つの主な違いは何ですか?

41
user1087032

特に初心者レベルでは、かなりのクロスオーバーがあります。そのため、どちらから始めても、ほとんどがもう一方に移行します。

主な違いのいくつか:

  • elispは伝統的に動的スコープルールを使用してきました。 Common LISPは、字句スコープ規則を使用します。動的スコープを使用すると、関数は関数の呼び出しで宣言されたローカル変数にアクセスでき、一般的に支持されなくなりました。 Emacsにはlexical-let字句スコープをシミュレートするフォームとemacsの最近のバージョンでは、関数ごとにオプションの字句スコープを使用できます。

  • elispにはクロージャがないため、関数の作成やカリー化が困難です。あります apply-partiallyカリー化と同様に機能する関数。 lexical-let Emacs 24で導入されたフォームにより、字句スコープを介してクロージャを生成できます。

  • 時間をかけて構築されてきたCommonLISPライブラリの多くは、elispでは利用できません。サブセットはelispclパッケージによって提供されます

  • elispは末尾呼び出しの最適化を行いません。

36
ataylor

これらのEmacs-Wikiページは、2つのLisp間の関係とそれらの違いに関する情報を提供します。

6
Drew