Lisp, инструкции не работают в defun [дубликаты]
На этот вопрос уже есть ответ:
Общепринятая ошибка: «должно быть лямбда-выражением» 4 ответа Я пытаюсь создать функцию, которая меняет инфиксный ввод на префикс, например:(x + 1)
в качестве ввода выводится как(+ x 1)
.
Так вот мой код на данный момент:
(setq x '(Y + 1))
(if (listp x ) (list (second x) (first x) (first (last x))) x)
так что возвращается(+ Y 1)
если я введу список и пользовательский ввод, если это не список.
Однако проблема в том, что я не могу заставить этот код работать в функции:
(defun prefixToInfix (x)(
(if (listp x ) (list (second x) (first x) (first (last x))) x)
)
)
функция действительно создана, но когда я ее называю
(prefixtoinfix '(Y + 1))
Я получаю ошибку
Error: Illegal function object: (IF (LISTP X) (LIST # # #) X).
[condition type: TYPE-ERROR]
Я не знаю, почему мой оператор if работает в основной программе, но не работает, когда я запускаю его из своей функции.