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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta