module IdM where
import MT
import Control_Monad_Fix
newtype IdM a = I { removeId :: a }
instance Monad IdM where
return = I
I x >>= f = f x
instance Functor IdM where
fmap f (I x) = I (f x)
instance HasBaseMonad IdM IdM where
inBase = id
instance MonadFix IdM where
mfix f = let r@(I x) = f x in r