[GHC] #12203: Allow constructors on LHS of (implicit) bidirectional pattern synonym
GHC
ghc-devs at haskell.org
Thu Aug 25 19:46:56 UTC 2016
#12203: Allow constructors on LHS of (implicit) bidirectional pattern synonym
-------------------------------------+-------------------------------------
Reporter: ezyang | Owner:
Type: feature request | Status: new
Priority: low | Milestone:
Component: Compiler (Type | Version: 8.0.1
checker) | Keywords:
Resolution: | PatternSynonyms
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by mpickering):
I don't think this is a great idea. The specification about what can
appear on the RHS is currently very simple, it just has to be a pattern.
The rules for turning this pattern into an expression are also very simple
and rely on the fact that a lot of pattern syntax looks like the
corresponding expression.
Allowing this change complicates things, firstly in the parser, `Vec (x :
unVec xs)` is not valid pattern syntax currently. Secondly, the rules for
how to perform the inversion require more thought. Looking at Simon's
example, I have to think a bit about what should happen.. it seems the
corresponding expression should be `Vec (x : Vec xs)` but I'm still not
sure that is right! Perhaps the rule is as simple as replace the function
with it's inverse but it seems ad-hoc to me.
I do have other lingering concerns that the way we designed the feature,
the most useful constructs are the least supported. I'm referring to the
fact that all interesting uses are explicitly bidirectional pattern
synonyms which require view patterns. Such definitions tend to be quite
noisy to define -- something more like views would have made things
cleaner.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12203#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list