LISP - Funções de Retorno de Valores

Por padrão, uma função em LISP retorna o valor da última expressão avaliada como o valor de retorno. O exemplo a seguir demonstraria isso.

Exemplo 1

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

(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))

Quando você executa o código, ele retorna o seguinte resultado -

100
125.0

No entanto, você pode usar o return-from operador especial para retornar imediatamente qualquer valor da função.

Exemplo 2

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele -

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

Quando você executa o código, ele retorna o seguinte resultado -

10

Mude um pouco o código -

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

Ainda retorna -

10