(rontolisp) docs
← マクロ

return-from

(return-from name [value])

name という名前の囲んでいるブロックから value(デフォルト nil)を返します。defun 本体は関数名のブロック、defmethod 本体はジェネリック名のブロックになるため、do/loop(その暗黙ブロックの名前は nil)の内側からでも return-from は関数から抜けます。(return-from nil v)(return v) と同じです。同じ関数内の return-from は直接ジャンプにコンパイルされます。囲んでいるブロックを名指しする lambda 内の return-from(たとえば mapcar/mapl に渡した lambda の中)は、全バックエンドでそのブロックから非局所脱出し、Common Lisp と一致します。(このような lambda 境界をまたぐ脱出は WASM バックエンドでは例外処理モードでコンパイルされます。flet/labels のローカル関数をまたぐ必要がある return-from はコンパイラではまだ未対応です。)