Lisp匿名函数局部变量



如何将匿名函数分配给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可以处理递归函数。

查看labels的文档信息,或者查看labelsflet的区别

最新更新