[英]how to return function in elisp
这与此问题有关: elisp函数用作参数和返回值
(defun avg-damp (n)
'(lambda(x) (/ n 2.0)))
或
(funcall (avg-damp 6) 10)
要么
((avg-damp 6) 10)
他们给出了Symbol's value as variable is void: n
错误, Symbol's value as variable is void: n
和eval: Invalid function: (avg-damp 6)
。
第一种形式不起作用的原因是n
是动态绑定的,而不是词法绑定的:
(defun avg-damp (n)
(lexical-let ((n n))
(lambda(x) (/ x n))))
(funcall (avg-damp 3) 12)
==> 4
第二种形式不起作用的原因是Emacs Lisp与Common Lisp一样, 是“ lisp-2”,而不是“ lisp-1”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.