Lisp, las instrucciones no funcionan en defun [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Error común de lisp: "debería ser una expresión lambda" 4 respuestas Estoy tratando de hacer una función que cambie la entrada de infijo a prefijo, por ejemplo:(x + 1)
como entrada producida como(+ x 1)
.
Así que aquí está mi código por el momento:
(setq x '(Y + 1))
(if (listp x ) (list (second x) (first x) (first (last x))) x)
entonces devuelve(+ Y 1)
si ingreso una lista y el usuario ingresa si no es una lista.
Sin embargo, el problema es que no puedo hacer que este código funcione en una función:
(defun prefixToInfix (x)(
(if (listp x ) (list (second x) (first x) (first (last x))) x)
)
)
la función sí se crea, pero cuando la llamo
(prefixtoinfix '(Y + 1))
Recibo un error
Error: Illegal function object: (IF (LISTP X) (LIST # # #) X).
[condition type: TYPE-ERROR]
No sé por qué mi declaración if funciona en el programa principal pero no cuando lo ejecuto desde mi función.