如何定义在clisp中返回函数的函数

时间:2016-09-04 13:02:52

标签: clisp

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

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

当我输入

((multn 7) 5)

它给出了35。

然而,当我使用Clisp时:

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

它给了我错误:'EVAL:(MULTN 7)不是函数名;尝试使用符号代替'

我怎样才能让它发挥作用?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您需要使用funcall,因为Common Lisp中有不同的命名空间:

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

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