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

blu*_*ers 6 lisp conditional

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

Gre*_*ill 10

Paul Graham的On Lisp有一章关于Anaphoric Macros.

从本质上讲,它是编写语句的简便方法,可以避免重复代码.例如,比较:

(let ((result (big-long-calculation)))
  (if result
      (foo result)))
Run Code Online (Sandbox Code Playgroud)

(if (big-long-calculation)
    (foo it))
Run Code Online (Sandbox Code Playgroud)

where it是一个特殊的名称,指的是刚才计算的东西(big-long-calculation).

  • @blunders:的确如此.除非你已经非常熟悉Lisp中不同类型的宏,否则回指宏可能不是最好的开始.关于Lisp是一个很好的阅读. (2认同)

Rai*_*wig 4

Common Lisp 就是一个例子LOOP

(loop for item in list
      when (general-predicate item)
      collect it)
Run Code Online (Sandbox Code Playgroud)

该变量IT具有测试表达式的值。这是 ANSI Common LispLOOP工具的一个功能。

例子:

(loop for s in '("sin" "Sin" "SIN")
      when (find-symbol s)
      collect it)
Run Code Online (Sandbox Code Playgroud)

回报

 (SIN)
Run Code Online (Sandbox Code Playgroud)

因为 only"SIN"是现有符号的名称,此处为 symbol SIN。在 Common Lisp 中,符号名称默认具有内部大写名称。