Переменные считывателя
Синтаксис #1=...
( sharpsign-equal ) означает, что ваша среда Lisp связывает любые данные, представленные ...
, спеременная читателя номер 1. Синтаксис #1#
( sharpsign-sharpsign ) ссылается на данные, которые ранее были связаны с той же переменной читателя.
Таким образом, ваш LispОкружающая среда говорит, что форма (- X Y)
не является символом или лямбда-выражением, но делает это с помощью переменной считывателя, которая указывает на подвыражение, содержащее ошибки в вашей функции.
Не символ или лямбда-выражение
При нормальных правилах оценки (без специального оператора, без части макроса) список, подобный (f x y ...)
, является вызовом функции, где f
- вызываемая функция, а x
, y
, ... являются аргументами.Единственными возможными значениями, которые могут отображаться как f
, являются символы, как в (mod 10 3)
, или буквенные лямбда-выражения, как в ((lambda (x y) (mod x y)) 10 3)
.Если вам нужно во время выполнения определить, какие функции вызываются, используйте funcall
(например, (funcall (alexandria:compose #'/ #'+) 10 20)
).
Здесь вы ввели (- X Y)
, который не является ни символом, ни лямбда-выражением.Вам нужно написать вместо:
(euklid (- X Y) Y)