web-dev-qa-db-ja.com

Clojureの角括弧と中括弧はまだS式ですか?

私はLISPを学び、そこにあるすべてのLispとその違いを調べています。

Schemeの一部の実装では、読みやすくするために角かっこを丸かっこと同じように使用できることがわかります。それらは同じように扱われるので、他のすべてのようにまだS式であると思います。

ただし、Clojureでは、角かっこと中かっこを使用して、ベクターなどのさまざまなデータ型を表していることがわかります。これらも有効なS式ですか、それともアトムと見なす必要がありますか?これはS式の概念全体を「壊す」のではなく、それによってClojureを「不純な」Lispにしますか?

12
mydoghasworms

ベクトルとマップのリテラル表記(つまり、角かっこと中かっこ)は read-time 糖であり、その表記で表現できるものはすべてS式でも表現できます。その結果、パワーやホモニコ性が失われることはありません。実際、リーダーマクロ(私が理解している方がさらに強力です)は、多くのリップスで使用できます。

ちなみに、Clojureは、カスタムの「タグ付き」リテラルを作成するメカニズムを提供することに注意してください。これは、他のリテラルと同様に、コンパイルおよび解釈される前にS式に変換されます。

10
tvachon

S式は、データのテキスト表現です。数値、記号、コンスセル、リスト、文字列など... Common LISPには、配列、ベクトル、その他の数値型、文字などのテキスト表現もあります。CommonLISPは、ユーザーが拡張できるリーダーも提供しているため、ユーザーが追加できます。データ型のより多くのテキスト表現。このメカニズムは、LISPプログラミング言語の構文を変更するためにも使用される場合があります(たとえば、他のプログラミング言語のインフィックス式またはステートメントをサポートするため)。

したがって、LISP方言が追加のデータ型のテキスト表現を提供する場合、これはs式の考え方によく適合します。

3
Rainer Joswig