
Questions
* What if there are multiple COMPLETE pragmas e.g.
{-# COMPLETE A, B, C #-}
{-# COMPLETE A, X, Y, Z #-}
Is that ok? I guess it should be!
Will the pattern-match exhaustiveness check then succeed
if a function uses either set?
What happens if you use a mixture of constructors in a match
(e.g. A, X, C, Z)? Presumably all bets are off?
* Note that COMPLETE pragmas could be a new source of orphan modules
module M where
import N( pattern P, pattern Q )
{-# COMPLETE P, Q #-}
where neither P nor Q is defined in M. Then every module that is
transitively "above" M would need to read M.hi just in case its
COMPLETE pragmas was relevant.
* Point out in the spec that COMPLETE pragmas are entirely unchecked.
It's up to the programmer to get it right.
* Typing. What does it mean for the types to "agree" with each other.
E.g A :: a -> [(a, Int)]
B :: b -> [(Int, b)]
Is this ok? Please say explicitly with examples.
* I didn't really didn't understand the "Error messages" section.
Simon
| -----Original Message-----
| From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Matthew
| Pickering
| Sent: 22 November 2016 10:43
| To: GHC developers