Как определить функцию, которая возвращает функцию в clisp

Вот функция, которую я определил на схеме:

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

и когда я печатаю

((multn 7) 5)

это дает 35.

Тем не менее, когда я использовал Clisp:

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

это дает мне ошибку: "EVAL: (MULTN 7) не является именем функции; попробуйте вместо этого использовать символ

Как я могу заставить это работать? Заранее спасибо.

1 ответ

Решение

Вам нужно использовать funcall из-за отдельных пространств имен в Common Lisp:

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

См., Например, кулинарную книгу Common Lisp для подробного объяснения.

Другие вопросы по тегам