Decidí aprender LISP hoy, y he estado jugando un poco con eso. Escribí una función simple de bebé solo para poner a prueba mi comprensión, y ahora entiendo que mi comprensión no comprende tanto como yo lo había entendido. : DLa función LISP simple no funciona
De todos modos, aquí está la función. La idea es que cuando se llame, p. (esexp base x) debe devolver el valor base^x. Por lo tanto (3 esexp 4) = 3^4 = 81.
(estoy usando la aplicación CMU de Common Lisp, si lo que importa.)
(defun esexp (base x)
(if (= x 0)
1
(if (< x 0)
(/ esexp (base (+ x 1)) base)
(* esexp (base (+ x 1)) base))))
Esto no funciona. Obtengo errores que parecen (Advertencia: Esta variable no está definida: SLBEXP) y (Error en KERNEL :: UNBOUND-SYMBOL-ERROR-HANDLER: la variable SLBEXP está desatada.) Entonces. ¿Qué estoy haciendo mal? ¿Y habría una mejor (o más forma LISP-ish) para escribir esta función?
ETA
código corregido:
(defun esexp (base x)
(if (= x 0)
1
(if (< x 0)
(/ (esexp base (+ x 1)) base)
(* (esexp base (- x 1)) base))))
Ah duh. Gracias. – Asker