まるで、すべてがclojureの括弧で囲まれている必要があるようです。単純なHelloWorldでも!
(println "Hello world!")
その構文決定の利点は何ですか?
基本的な理由は、Clojureが同像性言語として設計されたためです。つまり、コードは言語のコアデータ構造で表現されます。すべてのLispはこのプロパティを共有していますが、他の言語はほとんど共有していません。その結果、Lispsの言語設計全体がこの決定の影響を強く受けます。
Lispの設計の早い段階で、リストが次の形式の関数呼び出しに使用されるという選択が行われました。
(function arg1 arg2 arg3) => some result
これには多くの利点があります。
(cons function-symbol list-of-args)
関数名は括弧の外に置くことができます:
function (arg1 arg2 arg3) => some result
しかし、これには多くの欠点があります。
Clojureはどうですか
(println "Hello world!")
とは異なる
println("Hello world!")
他の言語の?異なる位置でのみ同じ数の括弧。
親は関数呼び出しを(リストとして)区切ります。Cのような言語では、parensはパラメータのみを囲み、LISPのような言語では、関数名が含まれます。
Lispベースの言語は、コードとデータの両方の基礎としてS式(括弧で囲まれたコード)を使用します。これは、Lispに独自の強力なマクロシステムを提供するため、非常に強力です。homoiconcityも参照してください。