(block name ..body)
  name: a sym
  body: zero or more forms
S

Defines a pair of jump targets.

The body of a block form is an "implicit do". Within that body, restart-block and finish-block can be used to jump to the beginning or the end of the block, respectively.

Nested blocks may share the same name. If so, that name will refer to the innermost block. We say that the inner block "shadows" the outer block.

It's not possible for restart-block or finish-block to jump outside of an enclosing fn form.

(block looper
  (fn ()
    (restart-block looper))) ; an error
do
restart-block