繁体   English   中英

如何在elisp中返回函数

[英]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: neval: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM