Clojure细节之form和special form的区别
前言
??? 在lisp程序员看来,form和special form的区别是一目了然而且无需解释的--因为这两个
概念本身就源自lisp.但对于指令式语言的开发人员而言,当他们进入clojure的世界中,会不
断看到和听到这两个名词,然后会把special form理解为某种关键字或者是宏之类的东西.
这样的理解实际上是有一定偏差的.
form??? 首先让我们来看看Clojure中的form,最简单的form就是由函数和它的参数们构成:
(if (= a 1) (println 1) (println 2))
??? 如果我们按照form的方式求值,那么明显地,后面的两个打印函数都会执行;但实际的运行中
只会有一个打印结果,也就代表着只会对某个打印函数求值而不是两个都同时求值,这样也充分
体现了special form和form的不同.
?
?
?