expr_type_mismatch
Expression argument’s type does not satisfy the function’s :params declaration.
Two failures share this code, and the message tells them apart.
The static one is the declared-type check: an argument whose
type does not satisfy the head’s :params / :rest. It is
anchored at the offending argument and names it by path
(sqrt/0).
The runtime one fires when the types are fine but an evaluated
value falls outside the function’s domain: (clamp 5 10 0)
with lo above hi, (nth [1 2 3] 9) past the end,
(normalize [0 0]) with no direction, (/ 1 0). The validator
cannot reach these: it knows what a slot declares, not what an
expression computes. They are anchored at the form’s head with
no path, and the form yields no value while its neighbours keep
evaluating.
Run sjon explain expr_type_mismatch to read this at a terminal, browse every code, or work through diagnostics-driven repair if you want the habit rather than the answer.