Как определить функцию, которая возвращает функцию в 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 для подробного объяснения.