LISP - Funciones de devolución de valores

De forma predeterminada, una función en LISP devuelve el valor de la última expresión evaluada como valor de retorno. El siguiente ejemplo lo demostraría.

Ejemplo 1

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

(defun add-all(a b c d)
   (+ a b c d)
)
(setq sum (add-all 10 20 30 40))
(write sum)
(terpri)
(write (add-all 23.4 56.7 34.9 10.0))

Cuando ejecuta el código, devuelve el siguiente resultado:

100
125.0

Sin embargo, puede utilizar el return-from operador especial para devolver inmediatamente cualquier valor de la función.

Ejemplo 2

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él:

(defun myfunc (num)
   (return-from myfunc 10)
   num
)
(write (myfunc 20))

Cuando ejecuta el código, devuelve el siguiente resultado:

10

Cambia un poco el código -

(defun myfunc (num)
   (return-from myfunc 10)
   write num
)
(write (myfunc 20))

Todavía regresa -

10