在常见的lisp中命名为lambda

时间:2015-01-17 15:11:38

标签: common-lisp

我需要编写一个递归辅助函数,不需要给它全局范围,但我需要引用它来实现递归。

Emacs lisp有fset,它为符号的功能单元分配。常见的lisp中的等价物是什么?

2 个答案:

答案 0 :(得分:2)

我刚刚发现这是一个常见于alexandria的惯用语。来自亚历山大代码:

(defmacro named-lambda (name lambda-list &body body)
  "Expands into a lambda-expression within whose BODY NAME denotes the corresponding function."
  `(labels ((,name ,lambda-list ,@body))
 #',name))

以下是一个用法示例:

答案 1 :(得分:1)

malisper说的是什么。

或者如果你真的需要一个名为lambda:

(defmacro named-lambda (name args &body body)
  `(labels ((,name ,args ,@body))
     #',name))