什么是Lisp中的一个回指条件的例子?

时间:2010-10-13 01:19:17

标签: lisp conditional

Lisp中的一个回指条件的例子是什么?请解释一下代码。

2 个答案:

答案 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中,默认情况下,符号名称具有内部大写名称。