Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 特殊表格是否仅使用特殊符号?_Clojure - Fatal编程技术网

Clojure 特殊表格是否仅使用特殊符号?

Clojure 特殊表格是否仅使用特殊符号?,clojure,Clojure,在REPL中执行以下命令 (symbol-special? 'do) ;=> true (type 'do) ;=> Symbol (doc do) ;=>.. it is a Special form... 同样的事情也发生在let身上 (symbol-special? 'let) ;=> FALSE (type 'let) ;=> Symbol

在REPL中执行以下命令

    (symbol-special? 'do) ;=> true
    (type 'do)            ;=> Symbol
    (doc do)              ;=>.. it is a Special form...
同样的事情也发生在let身上

    (symbol-special? 'let) ;=> FALSE
    (type 'let)            ;=> Symbol
    (doc let)              ;=>.. it is a Special form...
我知道let是一个使用特殊符号let*的宏,特殊符号和特殊形式之间有关系吗

在这方面,“特殊表单”是指那些接受编译器特殊处理的表单。这些正是在操作员位置上具有“特殊符号”的形式

let
在文档中被描述为一种特殊形式,因为
let*
被视为一种实现细节,鼓励用户将
let
视为该语言的基本构建块。至少这是我的理解


(注意,其他Lispy语言的用户可能会对这两个术语赋予不同的含义。这种用法是在Clojure社区建立起来的。)

为了补充Michal的答案,我想补充一点,一些符号并不被认为是特殊的,但其行为类似于宏:任何以句点开始或结束的符号。