module Control.Monatron.IdT  where 



import Control.Monatron.Monatron



newtype IdT m a = IdT { runIdT :: m a }



instance MonadT IdT where

    lift         = IdT

    tbind m f    = IdT $ runIdT m >>= runIdT . f 

    

instance FMonadT IdT where

    tmap' d1 _d2 g f       = IdT . f . fmapD d1 g . runIdT