(block имя form1 form2 ...)
=> NIL или результат
(return-from имя [результат])
(return [результат])
Имя блока — символ, не оценивается, задёт точку нелокального выхода.
Результат — форма, оценивается, может возвращать
множественное значение.
Если форма результата не задана, блок возвращает NIL
.
return — возврат из блока с именем NIL
(часто неявного, например dotimes,
dolist,
loop и т.п.).
(let ((val 1)) (block out (return-from out (1- val)) (incf val)) 0 (block out (return-from out) 2) NIL (let ((a 0)) (dotimes (i 10) ; неявный блок с именем NIL (incf a) (when (oddp i) (return))) a) 2