web-dev-qa-db-ja.com

Common LISPを「大きく」するものは何ですか?

私はCommon LISPとRacketの両方を学習してきましたが、一貫して聞いていることの1つは、ラケットはCommon LISPよりはるかに「小さい」言語だということです。これが本当に何を意味するのかと思っていました。私の知る限り、Common LISPの構文は、ラケットの構文ほど大きくありません。

基本的に、私は一般的なLISPについて正確には何が大きいのだろうと思います。私が知らない構文がありますか?より大きな環境はありますか?より大きな実行可能ファイル?より大きなライブラリ?またはそれらのいくつかの組み合わせ?

これは「どちらが良い」スレッドではありません。「大きい」の意味を正確に知りたいのですが。

8
jepugs

Common LISPには大きな標準ライブラリがあります。そして、ラケットもそうです。

主な違いは、ラケットはすべてをモジュールに分割するので、標準ライブラリのすべてを使用しないプログラムはそれを見る必要がないということです。使用したいビットをインポートするだけで、残りはきれいに隠されます。

5

おそらく、客観的な(間接的な場合)対策がここで役立ちます。言語の仕様のサイズを考慮してください。

ラケットは基本的にR6RSスキームの実装です。 R6RS仕様は合計90ページです。このうち、約25ページが言語固有のページで、約30ページが標準ライブラリのページです。それに加えて、いくつかの紹介資料、リファレンス、用語集などを入手できます。視点によっては、仕様の「実際の」合計として、約50〜90ページの範囲を主張できます。

Common LISP仕様は合計で約1400ページです。繰り返しになりますが、これには付属資料が含まれます。それでも、ほとんどの人は仕様自体が少なくとも800ページであることを認め/同意する必要があると思います。

つまり、CL仕様で可能な最小の見積もりを取り、それをR6RSのサイズで可能な最大の見積もりと比較しても、CL仕様は、Scheme仕様のサイズの約10倍になります。

10
Jerry Coffin

実際、Common LISPは他のいくつかの言語と比較して、それほど大きくありません。 Common LISPの仕様を見ると、ページが非常に長く、多くの場合1つの構造になっていることがわかります。たとえば、Scheme標準では、Common LISPが1つのページを使用する1つのページの12の機能について説明しています。

R6RS + Libraries + SRFI、ラケット、またはR7RS bigなどの言語は、ANSI Common LISPよりも実際には小さくありません。

Common LISPが大きい場合:MOP、CLOSベースのストリームなどの準標準ライブラリを考慮に入れると、人気のあるCommon LISP実装のマニュアルは、多くの機能を提供するため、大きくなる傾向があります。広範な方法。

4
Rainer Joswig

Common LISPのパッケージCOMMON-LISPには、非常に大きな標準ライブラリがあります。

Schemeの標準ライブラリははるかに小さいです。すべての実装には、通常多くのモジュール内に独自のライブラリ(CLに匹敵するほどの大きさの場合が多い)が付属しています。

構文に関しては、私が知る限り、Schemeの構文は「固定」されていますが、Common LISPには reader を変更するために使用できる非常に強力なツールがあります。例: CLOCC/CLLIB/xml.LISP[〜#〜] read [〜#〜]

2
sds