diff --git a/src/Control/Monad/Codensity.hs b/src/Control/Monad/Codensity.hs index 092e8f2..290ccc6 100644 --- a/src/Control/Monad/Codensity.hs +++ b/src/Control/Monad/Codensity.hs @@ -44,6 +44,7 @@ module Control.Monad.Codensity import Control.Applicative import Control.Monad (MonadPlus(..)) import qualified Control.Monad.Fail as Fail +import Control.Monad.Fix import Control.Monad.Free import Control.Monad.IO.Class import Control.Monad.Reader.Class @@ -168,6 +169,9 @@ instance MonadPlus v => MonadPlus (Codensity v) where {-# INLINE mplus #-} #endif +instance MonadFix v => MonadFix (Codensity v) where + mfix f = Codensity (\k -> mfix (lowerCodensity . f) >>= k) + -- | -- This serves as the *left*-inverse (retraction) of 'lift'. --