1.quote
Lisp 提供 quote 作为一种保护表达式被求值的方式。Common Lisp 定义 ' 作为 quote 的缩写。
[62]> (quote (+ 3 5))
(+ 3 5)
[64]> '(+ 3 5)
(+ 3 5)
这意味着 Lisp 程序可以写出 Lisp 代码。 Lisp 程序员能(并且经常)写出能为自己写程序的程序。
2. if
[20]> (if t 'a 'b)
A
[21]> (if nil 'b 'a)
A
第一个参数是判断,第二个是为true时求值,第三个是false求值。
3. and和or
逻辑操作符 and 和 or 与条件式 (conditionals) 类似。两者都接受任意数目的参数,但只对能够决定返回值的那几个参数来作求值。如果所有的参数都为 真 (即不为 nil ),那么 and 会返回最后一个参数的值,如果其中一个参数为 假 ,那么之后的所有参数都不会被求值。 or 也是如此,只要碰到一个是 真 的参数,就停止对之后的所有的参数求值。
[23]> (and t t (+ 1 3) t)
T
[24]> (and t t (+ 1 3) nil)
NIL
[25]> (and t t (+ 1 3) nil t)
NIL
[26]> (or nil nil (+ 4 5))
9
[28]> (or nil nil (+ 4 5) nil)
9
[29]> (or nil nil (+ 4 5) (- 8 7) nil)
9
其实也可以这么理解,对每一个参数求值,当and遇到nil,或者or遇到非nil,终止求值,返回nil或者非nil。没遇到就返回最后一个参数的值。
上一篇: 互联网分享之道
下一篇: common lisp变量和赋值,类型判断
0 Responses so far.