estoy confundido acerca de cómo defun macro funciona, porquepor qué defun no es lo mismo que (setq <name><lambda>)?
(defun x() "hello")
creará función de x, pero el símbolo x todavía estará unido.
Si voy a obligar a algunos a lambda x entonces x tendrá un valor, pero no va a ser tratado por el intérprete como función de forma de esta manera:
(x)
creo que está relacionado con el hecho de que defun debería definir la función en el entorno global, pero no estoy seguro de qué significa exactamente. ¿Por qué no puedo seguirlo en el entorno actual?
¿Hay alguna manera de obligar al intérprete a tratar el símbolo como función si alguna lambda estuviera vinculada a él? Por ejemplo:
(setq y (lambda() "I want to be a named function"))
(y)
P.S .: Estoy usando SBCL.