Lisp中的一个回指条件的例子是什么?请解释一下代码。
答案 0 :(得分:10)
保罗格雷厄姆的On Lisp有一章Anaphoric Macros。
基本上,它是编写语句的简便方法,可以避免重复代码。例如,比较:
(let ((result (big-long-calculation)))
(if result
(foo result)))
和
(if (big-long-calculation)
(foo it))
其中it
是一个特殊名称,指的是(big-long-calculation)
中刚刚计算的内容。
答案 1 :(得分:4)
一个例子是Common Lisp LOOP
:
(loop for item in list
when (general-predicate item)
collect it)
变量IT
具有测试表达式的值。这是ANSI Common Lisp LOOP
工具的一个特性。
示例:
(loop for s in '("sin" "Sin" "SIN")
when (find-symbol s)
collect it)
返回
(SIN)
因为只有"SIN"
是现有符号的名称,此处为符号SIN
。在Common Lisp中,默认情况下,符号名称具有内部大写名称。