如何将匿名函数分配给cl, emacs lisp或clojure中的局部变量?
我尝试了以下方法,但没有成功。
(let ((y (lambda (x) (* x x)) )) (y 2))
和
((lambda (x) 10) (lambda (y) (* y y)))
在CL中,可以使用flet
或labels
。
(defun do-stuff (n)
(flet ((double (x) (* 2 x)))
(double n)))
(do-stuff 123) ;; = 246
Chris指出,由于double
不是递归的,我们应该使用flet
,因为两者的区别是labels
可以处理递归函数。
查看labels
的文档信息,或者查看labels
和flet
的区别