Ошибка в коде Lisp
При запуске выявляется ошибка: *** - FUNCALL: аргумент (LAMBDA (X) (< X 0)) - не функция. Как это можно исправить?
`(DEFUN CHANGE (FN L)
(COND
((NULL L) NIL)
((NOT (FUNCALL FN (CAR L)))
(CONS '* (CHANGE FN (CDR L))))
(T (CONS (CAR L) (CHANGE FN (CDR L))))
)
)
(PRINT '_);
(SETQ L1 '(3 4 G 6 E 4 R))
(PRINT (CHANGE 'NUMBERP L1))
(SETQ L2 '(0 4 7 -6 6 -9 10))
(PRINT (CHANGE '(LAMBDA (X) (< X 0)) L2))`
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Список после квоты '(lambda.. не вопринимается как лямбда функция. Только как список.
Есть три варианта, как правильно записать :
(PRINT (CHANGE (lambda (X) (< X 0)) L2))
(PRINT (CHANGE #'(lambda (X) (< X 0)) L2))
(PRINT (CHANGE (function (lambda (X) (< X 0))) L2))