[GHC] #8779: Exhaustiveness checks for pattern synonyms
GHC
ghc-devs at haskell.org
Thu Apr 21 00:28:31 UTC 2016
#8779: Exhaustiveness checks for pattern synonyms
-------------------------------------+-------------------------------------
Reporter: nomeata | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 7.8.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: |
-------------------------------------+-------------------------------------
Changes (by dfeuer):
* cc: dfeuer (added)
Comment:
I suspect making this really work right may require some modifications to
the pattern synonym concept. For example,
{{{#!hs
pattern Empty = Seq EmptyT
pattern x :<| xs <- (viewl -> x :< xs)
pattern xs :|> x <- (viewr -> xs :> x)
}}}
To see that either `x :<| xs` or `xs :|> x` is complete when combined with
`Empty`, the exhaustiveness checker would have to recognize that `viewl`
and `viewr` will give non-empty results under the same circumstances. This
may be feasible in this case (I'm not sure), but in principle it seems
rather hard. I think a good target would be to ensure that multiple
pattern synonyms using the ''same'' view are handled properly. An
alternative blunt instrument: let the user promise that a certain
combination of pattern synonyms will always be exhaustive when applied to
a particular type.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8779#comment:17>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list