[GHC] #10431: EqualityConstraints extension?

GHC ghc-devs at haskell.org
Tue Dec 29 10:23:40 UTC 2015


#10431: EqualityConstraints extension?
-------------------------------------+-------------------------------------
        Reporter:  adamgundry        |                Owner:
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:  8.0.1
       Component:  Compiler (Type    |              Version:  7.11
  checker)                           |
      Resolution:                    |             Keywords:
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 adamgundry):

 Thanks for thinking through the implications of this! I'm now not sure
 that the principle I articulated (`GADTs = GADTSyntax +
 ExistentialQuantification + EqualityConstraints`) is essential. My
 instinctive reactions are:

 1. Perhaps it would be better if this still required
 `ExistentialQuantification`, i.e. `GADTs` would enable existential GADTs
 but not plain existential datatypes?

 2. Yes.

 3. I'm in two minds about this. I know our general policy is to require
 flags only at definition sites, but type refinement on pattern matching is
 the whole point of GADTs, and is significantly different to non-GADT
 matching, so it seems like it is reasonable to mark the use sites as well.
 Perhaps GADT pattern matches should require `EqualityConstraints` (and
 hence `GADTs` would suffice)?

 4. I'm surprised that `GADTs` is not required in your example: my vote is
 to treat it as a bug and fix it without a deprecation period. I'd expect
 `GADTSyntax + ExistentialQuantification` to allow data constructors with
 existential variables and contexts, but not specialized result types. I
 don't particularly mind whether this declaration is or is not accepted by
 `GADTSyntax + ExistentialQuantification + EqualityConstraints` without
 `GADTs`.

 I'd be interested to hear what others think.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10431#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list