§4 meets §3, and the answer a reader will assume is the other one. An inner (use-value [s string] ...) shadows an outer (use-value [v i32] ...), so an i32 is refused there and the outer clause that would have taken it is never consulted. Searching outward for a frame whose signature fits would make which restart runs depend on the arguments, which is overload resolution on a dynamic stack. Also: neither of the new guards is a bounds check, so --no-bounds-checks does not remove them. A wrong index is a wrong answer; a transfer into a clause whose parameters were written to a different layout is not.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%