Skip to content

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.