function - Lisp 匿名函数局部变量

标签 function clojure lisp common-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 可以处理递归函数。

查看 docs有关 标签 的信息,或 this question labelsflet 的区别。

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

相关文章:

c++ - 错误: cannot convert `void (*)()' to `float'

php - 在特定时间后在 php 中终止函数?

php - 从数据库中动态获取子 ID?

Clojure 的加载字符串在 repl 中有效,但在 `lein run` 中无效

lisp - Peter Norvig 的人工智能编程范式中的练习 1.2

windows - Clozure 普通口齿不清。如何在 Windows 上列出子目录?

python - 有没有办法让 pandas 中的函数更通用?

clojure - cljs构建中jvm字节码如何转换为js

map - 存储解构映射供以后使用

c - 启用宏的语言如何跟踪源代码以进行调试?