
#12025: Order of constraints forced (in pattern synonyms, type classes in comments) -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.1 checker) | Keywords: Resolution: | TypeApplications PatternSynonyms Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: 11513, 10928 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): One possibility would be to use the same rules for pattern synonyms as for GADTs. When you write a GADT {{{ data A a where X :: A [xxx] }}} you mean {{{ X :: forall t. forall xxx. (t~[xxx]) => A t }}} so that it matches against a value of type `A ty` for any `ty`. We could do the same for pattern synonyms, so that {{{ pattern X' :: () => forall xxx. A [xxx] }}} means precisely {{{ pattern X' :: forall t. () => forall xxx. (t ~ [xxx]) => A t }}} Perhaps we could do without the leading `() =>`; I'm not sure. This doesn't deal with the whole issue (as Richard points out, GADTs themselves have a smaller problem), but it ameliorates it and makes it the same as GADTs. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12025#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler