function - 如何在elisp中返回函数

标签 function lisp return elisp

这与这个问题有关:elisp functions as parameters and as return value

(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: neval: Invalid function: (avg-damp 6) 错误。

最佳答案

第一种形式不起作用的原因是 n 是动态绑定(bind)的,而不是词法绑定(bind)的:

(defun avg-damp (n)
  (lexical-let ((n n))
    (lambda(x) (/ x n))))
(funcall (avg-damp 3) 12)
==> 4

第二种形式不起作用的原因是 Emacs Lisp 与 Common Lisp 一样,a "lisp-2", not a "lisp-1"

关于function - 如何在elisp中返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344077/

相关文章:

sql - 错误 : return type mismatch in function declared to return

javascript - 如何获取 JavaScript 函数内的函数名称?

javascript - JavaScript 中的所有函数本质上都是方法吗?

recursion - 从列表中递归获取最小数量

C++ 从函数返回数组

javascript - 下划线中的返回值每次循环都不会停止函数

C: 如何在 strcmp 中使小写输入和大写输入相等?

c - Main 无法正确调用函数 "makeArray"

scheme - 计算 Racket BSL 中给定数字的适当除数之和

emacs - 是什么让 Emacs 成为 Lisp 程序员的绝佳编辑器?