Lisp 匿名函数局部变量

Lisp Anonymous Function Local Variable

如何在 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 for info on labels, or this question 了解 labelsflet 之间的区别。