{-# Language FlexibleInstances #-} {-# language OverlappingInstances #-} {-# language IncoherentInstances #-} module Control.Monatron.AutoInstances where import Control.Monatron.MonadT ------------------------------------------------------------------ instance (Monad m, MonadT t) => Monad (t m) where return = pure fail = lift . fail (>>=) = tbind instance (Monad m, MonadT t) => Functor (t m) where fmap = liftM instance (Monad m, MonadT t) => Applicative (t m) where pure = treturn (<*>) = ap