私はLispを学び、そこにあるすべてのLispとその違いを調べようとしています。
Schemeの一部の実装では、読みやすくするために角かっこを角かっこと交換可能に使用できることがわかります。
ただし、Clojureでは、ベクトルなどのさまざまなデータ型を表すために角括弧と中括弧が使用されていることがわかります。これらはまだ有効なS式でもありますか、それともアトムと見なされる必要がありますか?これはS式の概念全体を「壊し」、それによってClojureを「不純な」Lispにしませんか?
私はLispを学び、そこにあるすべてのLispとその違いを調べようとしています。
Schemeの一部の実装では、読みやすくするために角かっこを角かっこと交換可能に使用できることがわかります。
ただし、Clojureでは、ベクトルなどのさまざまなデータ型を表すために角括弧と中括弧が使用されていることがわかります。これらはまだ有効なS式でもありますか、それともアトムと見なされる必要がありますか?これはS式の概念全体を「壊し」、それによってClojureを「不純な」Lispにしませんか?
回答:
ベクトルとマップのリテラル表記(つまり、角かっこと中かっこ)は読み取り専用のシュガーであり、その表記で表現できるものはすべてS式でも表現できます。その結果、パワーやホモイコニック性の損失はなく、実際、多くのlispsでリーダーマクロ(さらに強力だと理解しています)を利用できます。
ちなみに、Clojureは、カスタムの「タグ付き」リテラルを作成するメカニズムを提供することに注意してください。これは、他のリテラルと同様に、コンパイルおよび解釈される前にS式に変換されます。
S式は、データのテキスト表現です。数字、記号、コンスセル、リスト、文字列、... Common Lispには、配列、ベクトル、より多くの数値型、文字などのテキスト表現もあります... Common Lispは、ユーザーが追加できるようにユーザー拡張可能なリーダーも提供しますデータ型のより多くのテキスト表現。このメカニズムは、Lispプログラミング言語の構文を変更するためにも使用される場合があります(たとえば、他のプログラミング言語からの挿入表現またはステートメントをサポートするため)。
したがって、Lisp方言が追加のデータ型のテキスト表現を提供する場合、これはs-expressionの概念によく適合します。