如何在 lisp 中定义 returns 函数

How to define a function that returns a function in clisp

这是我在 Scheme 中定义的一个函数:

(define (multn n) (lambda (x) (* x n)))

当我输入时

((multn 7) 5)

它给出 35。

然而,当我使用 Clisp 时:

(defun multn (n) (lambda (x) (* x n)))

它给我错误:'EVAL: (MULTN 7) is not a function name; try using a symbol instead'

我怎样才能让它工作?提前致谢。

您需要使用 funcall 因为 Common Lisp 中的独立命名空间:

[1]> (defun multn (n) (lambda (x) (* x n)))
MULTN
[2]> (funcall (multn 7) 5)
35

例如,请参阅 the Common Lisp cookbook 以获得深入的解释。