error-messages
error-messages copied to clipboard
Unbound variable in a pattern synonym
This
{-# LANGUAGE PatternSynonyms #-}
pattern P x = ()
gives
M.hs:2:11: error: Not in scope: ‘x’
|
2 | pattern P x = ()
| ^
I think this is too terse and the error should give more explanation. For a newcomer, it's very natural to expect it to work, because f x = () works.
For comparison,
pattern Q = x
gives
M.hs:2:13: error:
Invalid right-hand side of bidirectional pattern synonym ‘Q’:
‘x’ is not bound by the LHS of the pattern synonym
RHS pattern: x
|
2 | pattern Q = x
| ^
This is better, though it could also suggest adding 'x' to the LHS, or changing it to a wildcard, or making the pattern synonym unidirectional.
I'm personally happy enough with the second message, but I agree the first could have a
NB: Variables in a pattern synonym are bound to the right of the '='