[GHC] #14836: GHC fails to infer implied superclass constraint

GHC ghc-devs at haskell.org
Wed Feb 21 18:43:27 UTC 2018


#14836: GHC fails to infer implied superclass constraint
-------------------------------------+-------------------------------------
        Reporter:  crockeea          |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.2
      Resolution:                    |             Keywords:
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 crockeea):

 Oddly, if I involve `MultiParamTypeClasses`, I can make this work in some
 cases, but GHC refuses others:

 {{{
 {-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses,
 UndecidableInstances #-}

 module Bug where

 import Control.Monad.Reader
 import Control.Monad.IO.Class

 class (Monad m) => Message msg m where

 class (Monad m) => ImpliesMonad m where

 data Foo

 --instance (ImpliesMonad m) => Message Foo m where -- compiles

 --instance (MonadIO m) => Message Foo m where -- compiles

 --instance (MonadReader Bool m) => Message Foo m where -- does NOT compile
 }}}

 I've defined three similar instances above. The first two instances are
 accepted by GHC (as, in my opinion, they should be), but the third
 instance is reject (`could not deduce (Monad m)`).

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


More information about the ghc-tickets mailing list