Re: [GHC] #5144: Pattern synonyms

#5144: Pattern synonyms -------------------------------------+------------------------------------ Reporter: simonpj | Owner: cactus Type: feature request | Status: new Priority: normal | Milestone: _|_ Component: Compiler | Version: Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by cactus): Based on discussions with SPJ, I've updated the PatternSynonyms proposal and redesigned the implementation to postpone the instantiation of pattern synonyms until the desugarer. See the updated implementation at https://github.com/gergoerdi/ghc/tree/pattern-synonyms Basically, the old implementation was pretty much unsalvageable for patterns mentioning non-Haskell98 data constructors. The new one works nicely with unconstrained and constrained existential types. On the features front, I've added explicit syntax for unidirectional vs. bidirectional patterns. The tentative syntax is: {{{ pattern Head x -> (x:_) -- pattern-only synonym pattern Single x = [x] -- bidirectional synonym }}} So now you can rewrite the second one as {{{ pattern Single x -> [x] }}} and it will not introduce a new virtual constructor to be used in expressions. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/5144#comment:33 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC