如何在cl、emacs lisp或clojure中将匿名函数分配给局部变量?
我试过以下方法,但没有成功。

(let ((y (lambda (x) (* x x)) )) (y 2))


((lambda (x) 10) (lambda (y) (* y y)))

最佳答案

在CL中,可以使用fletlabels

(defun do-stuff (n)
    (flet ((double (x) (* 2 x)))
      (double n)))

(do-stuff 123) ;; = 246

正如Chris指出的,由于double不是递归的,我们应该使用flet,因为两者的区别在于labels可以处理递归函数。
查看docs了解labels的信息,或this question了解labelsflet之间的差异。

关于function - Lisp匿名函数局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32670266/

10-10 23:05