The Eq constraint is needed to support pattern matching, the raison d’être of pattern synonyms. I'm pretty sure the reason you need ScopedTypeVariables for your second example is that GHC only allows pattern signatures with that extension enabled. Once upon a time there was a separate PatternSignatures extension, I believe, but not any more. On Sep 30, 2015 2:04 PM, "Sven Panne" <svenpa...@gmail.com> wrote:
> The type of a pattern synonym like > > pattern FOO = 1234 > > seems to be '(Eq a, Num a) => a', which makes partially makes sense, > although it's not immediately clear to me where the 'Eq a' part comes from. > But probably that would be clear if I read the desugaring rules closely > enough. ;-) My real question is about: > > pattern FOO = 1234 :: Int > > This doesn't compile out of the box, GHC seems to require > ScopedTypeVariables, too: > > Illegal type signature: `Int' > Perhaps you intended to use ScopedTypeVariables > In a pattern type-signature > > Why is this the case? From a user perspective, the error is totally bogus, > there are no visible type variables at all. Can GHC be fixed to avoid > enabling ScopedTypeVariables? > > Cheers, > S. > > > _______________________________________________ > Glasgow-haskell-users mailing list > Glasgow-haskell-users@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users > >
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users