[GHC] #9123: Need for higher kinded roles

GHC ghc-devs at haskell.org
Tue Dec 16 17:09:37 UTC 2014


#9123: Need for higher kinded roles
-------------------------------------+-------------------------------------
              Reporter:  simonpj     |            Owner:  goldfire
                  Type:  bug         |           Status:  new
              Priority:  normal      |        Milestone:  7.12.1
             Component:  Compiler    |          Version:  7.8.2
            Resolution:              |         Keywords:
      Operating System:              |     Architecture:  Unknown/Multiple
  Unknown/Multiple                   |       Difficulty:  Project (more
       Type of failure:              |  than a week)
  None/Unknown                       |       Blocked By:
             Test Case:              |  Related Tickets:
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------

Comment (by goldfire):

 Replying to [comment:32 simonpj]:
 > I'm sure you can't be saying
 >  * Reject a constraint `C a Int` as "exotic"
 >  * Accept a constraint `forall a. C a Int` as fine

 Indeed, I was suggesting that implication constraints could be considered
 not exotic. Perhaps it would make the most sense to simply recur in the
 implication case, ruling out the example above, but accepting `(forall a
 b. Coercible a b => Coercible (m a) (m b))` (although I seem to recall
 that anything with a repeated variable is considered exotic).

 In any case, I have very little intuition as to how to set the exotic-
 checker and could be convinced to do just about anything.

 Here's a fresh approach to the problem: Don't rule out exotic contexts at
 all (subject to having the right language extensions on, as with all
 inferred types). Instead, issue a warning (on by default) when the context
 is exotic. The warning would exhort programmers to use standalone-deriving
 to suppress it. (Or, of course, there would be `-fno-warn-exotic-inferred-
 contexts`.) This should allow strictly more programs to type-check than
 today, so it's not a regression. And, as I understand it, the Haskell
 Report doesn't specify this end of the language, so we wouldn't be going
 against spec.

 With such a warning mechanism in place, I would favor a more stringent
 exotic-checker.

 With this warning behavior, `deriving (Monad)` would work (with
 `-XImplicationContexts`) and just issue a warning. (Without
 `-XImplicationContexts`, it would advise turning on
 `-XImplicationContexts`, of course!)

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


More information about the ghc-tickets mailing list