Nous avons déjà mentionné l'opérateur spécial return-from dans le chapitre 10. Cet opérateur permet d'abandonner l'évaluation des expressions dans un bloc. Cet opérateur est capable de dépiler des appels en cours :
Ici, les dix invocations de la fonction recfun sont abandonnées lorsque l'expression return-from est évaluée. L'expression print n'est donc jamais évaluée.
Un bloc implicite est établi par l'invocation d'une fonction. Ce bloc porte le nom de la fonction. Il est donc possible d'utiliser return-from pour sortir d'une fonction :
La macro return permet d'économiser quelques caractères lorsque le nom du bloc est nil.
Le mécanisme return-from est lexical, à savoir que l'étiquette du bloc n'est accessible qu'aux expressions qui sont à l'intérieur du bloc. L'exemple suivant n'est donc pas possible :
Irene DURAND