Common lisp 在公共lisp中命名为lambda
我需要编写一个递归助手函数,不需要给它全局范围,但我需要引用它来实现递归 Emacs lisp具有Common lisp 在公共lisp中命名为lambda,common-lisp,Common Lisp,我需要编写一个递归助手函数,不需要给它全局范围,但我需要引用它来实现递归 Emacs lisp具有fset,它分配给符号的功能单元。common lisp中的等价物是什么?malisper说的话 或者,如果您确实需要一个命名的lambda: (defmacro named-lambda (name args &body body) `(labels ((,name ,args ,@body)) #',name)) 我刚发现这是一个很普通的白痴。来自亚历山大代码: (def
fset
,它分配给符号的功能单元。common lisp中的等价物是什么?malisper说的话
或者,如果您确实需要一个命名的lambda:
(defmacro named-lambda (name args &body body)
`(labels ((,name ,args ,@body))
#',name))
我刚发现这是一个很普通的白痴。来自亚历山大代码:
(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))
以下是exmaple的用法:
(let ((! ;; Everything can be a symbol :D
;; Definition here
(named-lambda self (n)
(case n
(1 1)
(otherwise (* n
(self (1- n)))))))) ;; Recurse here
;; How to call it
(funcall ! 6))
我可以给一个符号分配一个lambda函数,然后
(funcall)
这个符号,但必须有一个更漂亮的方法。看看标签:P.S.我只是想为Lars Brinkhoff的答案添加一个例子。