答案 0 :(得分:22)
根本原因是Clojure被设计为homoiconic语言,即代码在语言的核心数据结构中表示。所有Lisps都共享此属性,但很少有其他语言可以。因此,Lisps的整个语言设计受到这一决定的强烈影响。
选择是在Lisp的设计早期做出的,列表将用于表单中的函数调用:
(function arg1 arg2 arg3) => some result
这有很多好处:
(cons function-symbol list-of-args)
函数名可以放在括号之外:
function (arg1 arg2 arg3) => some result
但这会有许多缺点:
答案 1 :(得分:10)
Clojure是怎样的
(println "Hello world!")
与
不同println("Hello world!")
其他语言?仅在不同位置使用相同数量的括号。
parens分隔函数调用(作为列表)。在类C语言中,parens只包含参数,而在类似LISP的语言中,它们包含函数名称。
答案 2 :(得分:7)
基于Lisp的语言使用s表达式(括号中的代码)作为代码和数据的基础。这非常强大,因为它为Lisp提供了一个独特的强大宏系统。另见homoiconcity。