The checker tests pin the reason rather than the failure: an array pattern over a slice has to fail *because a slice's length is a runtime value*, not because something went wrong. The four map-destructuring keys Clojure has and this does not are each named individually, because "unexpected form" leaves the author guessing which of the four they wrote is the missing one. The acceptance program exists for the case none of the above can see. A pattern is desugared away entirely, so there is nothing in the typed IR to inspect; the only way to tell that the value was bound once is to destructure something with a side effect and print how often it ran. Four names, two calls. A desugaring that re-evaluated the initialiser per name prints 4, and every other line in the program stays green through the mistake.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%