特殊的操作符允许对多个 Lisp 表单进行分组(如隐式 progn),并且它还使用名称来命名块。当评估块中的表单时 可以使用特殊运算符 return-from 离开块。例如:

(block foo
  (print 'hello)     ; evaluated
  (return-from foo)
  (print 'goodbye))  ; not evaluated
;;=> NIL

return-from 也可以提供返回值:

(block foo
  (print 'hello)     ; evaluated
  (return-from foo 42)
  (print 'goodbye))  ; not evaluated
;;=> 42

当一大块代码具有有意义的名称或嵌套块时,命名块很有用。在某些情况下,只有早期从区块返回的能力才是重要的。在这种情况下,你可以使用 nil 作为块名称,然后返回返回就像返回一样,除了块名称总是为零

注意:随附的表单不是顶级表单。这与 progn 不同,其中顶级 progn 形式的封闭形式仍被视为顶级形式。