
#8582: Record syntax for pattern synonyms -------------------------------------+------------------------------------- Reporter: cactus | Owner: mpickering Type: feature request | Status: new Priority: high | Milestone: 8.0.1 Component: Compiler | Version: Resolution: | Keywords: | PatternSynonyms Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: 5144 | Blocking: Related Tickets: | Differential Rev(s): Phab:D1152 -------------------------------------+------------------------------------- Comment (by simonpj): Matthew, I feel bad about this but I still don't understand the ''specification''. I honestly don't know what it means to say "a pattern synonym should behave like the relevant data constructor". The [wiki:PatternSynonyms#Design wiki page] does not even give a syntax. I think it may be something like this {{{ patsyndecl ::= 'pattern' con var1 .. varn <- pat | 'pattern' con '{' var1 ',' ... ',' varn '}' <- pat | ... more for bidirectional ... }}} where the second line is the new bit. Is that right? Just writing out the syntax would be very helpful. We need semantics as well as syntax. In comment:11 I tried to give some concrete pointers for what a specification might look like. It has to say * What the syntax is * What it means to use such a pattern synonym as a constructor * What it means to match against such a synonym I don't think any of this is very hard to do. But until it is done I don't know what the feature is, so it's hard to review the implementation. On the implementation front, I believe that you are stuck on a particular point. There's a long comment stream on the Phab ticket so I'm not sure what you are stuck on. Can you just identify the sticking point? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8582#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler