如何在 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 以获得深入的解释。
这是我在 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 以获得深入的解释。