haskell - Haskeline: Implementing `MonadException` instance for `ReaderT r (StateT s m)` stack -


this question has answer here:

let's have following monad transformer stack (r , s left () simplicity),

newtype mymonad m = mm (readert () (statet () m a) 

if want use base monad haskeline's inputt, need system.console.haskeline.monadexception instance. given apparent complexity of these instances, i'd prefer let compiler derive me generalizednewtypederiving. specifically, expect following typecheck,

{-# language generalizednewtypederiving, standalonederiving, flexiblecontexts #-}  import control.monad.state import control.monad.reader import control.monad.io.class import control.applicative import system.console.haskeline.monadexception  newtype mymonad m = mm (readert () (statet () m) a)                     deriving (functor, applicative, monad, monadio) deriving instance (monadexception m) => monadexception (mymonad m)         

yet sadly, gives me,

/home/bgamari/hi.hs:11:1:     not deduce (monadexception (statet () m))       arising superclasses of instance declaration     context (monadio (mymonad m), monadexception m)       bound instance declaration @ /home/bgamari/hi.hs:11:1-66     possible fix:       add instance declaration (monadexception (statet () m))     in instance declaration `monadexception (mymonad m)' 

looking @ provided instances statet , readert,

instance monadexception m => monadexception (readert r m) instance monadexception m => monadexception (statet s m) 

it seems reasonable expect compiler deduce statet instance. expecting of cunning generalizednewtypederiving? how 1 implement instance short of open-coding it?

there 2 versions of state monad: strict , lazy. import control.monad.state brings in lazy version, instance of monadexception seems strict version.

try import control.monad.state.strict instead of import control.monad.state.


Comments

Popular posts from this blog

Detect support for Shoutcast ICY MP3 without navigator.userAgent in Firefox? -

web - SVG not rendering properly in Firefox -

java - JavaFX 2 slider labelFormatter not being used -