Я начал изучать Lisp и использовать персональную версию Lispworks 6.1.1 и столкнулся с проблемой при оценке основных функций.Я могу понять их правильно в Схеме, но они не работают, когда я пытаюсь оценить их в Лиспе.
Я знаю в Лиспе, что у каждого символа есть два пространства имен.Поэтому я попытался написать простую процедуру для составления двух процедур.Он отлично работает в Scheme, но в Lisp есть проблема с оценкой.
Код в схеме работает отлично и возвращает 2
(define (comp a b)
(lambda (x)
(a (b x))))
(define test (comp car cdr))
(test '(1 2 3))
Тот же код, переписанный в Lisp
(defun comp (a b)
(lambda (x)
(funcall a (funcall b x))))
(defun test (comp #'car #'cdr))
(funcall test '(1 2 3))
Ошибка в lispworks:
Попытка связать не-символ (FUNCTION CAR)
.
, поэтому при попытке оценить (defun test (comp #'car #'cdr))
вслушатель, я получаю
Не символ (FUNCTION CAR)
, используемый в качестве имени переменной в функции TEST
.
Я не понимаю, почему она не работает, написанная таким образом.Я бы оценил любую помощь