如何在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
可以处理递归函数。查看docs了解
labels
的信息,或this question了解labels
和flet
之间的差异。关于function - Lisp匿名函数局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32670266/