似乎所有内容都需要用 clojure 的括号括起来。即使是一个简单的hello world!
(println "Hello world!")
这种语法决定有什么好处?
根本原因是Clojure 被设计为同音语言,即代码以该语言的核心数据结构表示。所有的 Lisps 都有这个属性,但很少有其他语言有。因此,Lisp 的整个语言设计都受到这一决定的强烈影响。
在 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 语言中,括号仅包含参数,而在类 LISP 语言中,括号包含函数名称。
基于 Lisp 的语言使用 s 表达式(括号内的代码)作为代码和数据的基础。这是非常强大的,因为它为 Lisp 提供了一个独特强大的宏系统。另请参见同质性。