[GHC] #15351: QuantifiedConstraints ignore FunctionalDependencies

GHC ghc-devs at haskell.org
Sun Jul 8 12:04:11 UTC 2018


#15351: QuantifiedConstraints ignore FunctionalDependencies
-------------------------------------+-------------------------------------
        Reporter:  aaronvargo        |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler (Type    |              Version:  8.5
  checker)                           |             Keywords:
      Resolution:                    |  QuantifiedConstraints
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  GHC rejects       |  Unknown/Multiple
  valid program                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by AntC):

 Replying to [comment:3 goldfire]:
 > Quantified constraints do not need a constraint -- just a `forall` is
 fine.

 Then the github proposal's [https://github.com/Gertjan423/ghc-
 proposals/blob/quantified-constraints/proposals/0000-quantified-
 constraints.rst#id8 syntax changes] are wrongly described. (And the same
 text has gone into the Users guide.) The `=>` is the defining syntax for
 the extension; the `forall` is optional (although often needed in
 practice).

 @aaron, perhaps you could take out the `QuantifiedConstraints` flag (but
 put in `ExplicitForAll`) and try re-compiling. Does GHC complain you need
 to switch on the extension? (Sorry I can't try that from here.)

 > I do think the original program should be accepted.

 Then what does it mean? At a guess: for some `f0` being the type
 constructor in an argument to `bar`, there's an `instance C (f0 a') Int`?
 Note that `a'` is quantified within the constraint, so is distinct from
 the `a1` argument to the constructor `f0`. There is no such instance
 declared, whereas for the `baz` example there is an `instance C [a] Int`.

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


More information about the ghc-tickets mailing list