More GND + role inference woes

Roman Cheplyaka roma at ro-che.info
Mon Nov 4 15:37:05 UTC 2013


* Richard Eisenberg <eir at cis.upenn.edu> [2013-10-16 13:28:54-0400]
> > Moreover, I think this solves the other failures in http://www.haskell.org/pipermail/ghc-devs/2013-October/002961.html.  Here is one example, in that email.  smallcheck has this:
> > newtype Series m a = Series (ReaderT Depth (LogicT m) a)
> >   deriving
> >     ( …,  MonadLogic)
> >  
> > where logict defines MonadLogic thus:
> >  
> > class (MonadPlus m) => MonadLogic m where
> >     msplit     :: m a -> m (Maybe (a, m a))
> >  
> > So the “bottom line” check above will attempt to find a cocercion betwem msplit’s type with m=Series m, and with m=ReaderT Depth (LogitT m).  Right?
> 
> Yes.
> 
> >   So on the left of msplit’s arrow, we’ll ask can we prove
> >  
> >      Series m a ~R ReaderT Depth (LogicT m) a
> >  
> > Can we show that?  Yes, of course… that is the very newtype coercion for Series.
> 
> Well, it's the right-hand side of the arrow that's more troublesome, but that works out in this case, too.

I just tried compiling smallcheck with GHC HEAD, and it didn't work out:

  Test/SmallCheck/SeriesMonad.hs:41:7:
      Can't make a derived instance of ‛MonadLogic (Series m)’
        (even with cunning newtype deriving):
        it is not type-safe to use GeneralizedNewtypeDeriving on this class;
        ‛msplit’, at type ‛forall a.
                           m a -> m (Maybe (a, m a))’, cannot be converted safely
      In the newtype declaration for ‛Series’

So GHC now looks at the methods, but the problem is still there.

What do you guys think?

I would agree that msplit's type is problematic (due to the nested m's),
but Simon and Richard previously said that it should work, so I'm
confused.

Roman
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20131104/23e550bc/attachment.sig>


More information about the ghc-devs mailing list