From d550e89d21c822d9118057757c4b6e6d12fa295d Mon Sep 17 00:00:00 2001 From: Finn Teegen Date: Thu, 14 Jul 2022 12:05:59 +0200 Subject: [PATCH] Add MonadFix instance for Codensity --- src/Control/Monad/Codensity.hs | 4 ++++ 1 file changed, 4 insertions(+) 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'. --