{-# OPTIONS_GHC -Wno-orphans #-} module Data.Semigroup.Monad.Extra (module Data.Semigroup.Monad ) where import Control.Monad.Fix import Data.Semigroup.Monad instance MonadFix f => MonadFix (Mon f) where mfix :: (a -> Mon f a) -> Mon f a mfix f :: a -> Mon f a f = f a -> Mon f a forall (f :: * -> *) m. f m -> Mon f m Mon ((a -> f a) -> f a forall (m :: * -> *) a. MonadFix m => (a -> m a) -> m a mfix (Mon f a -> f a forall (f :: * -> *) m. Mon f m -> f m getMon (Mon f a -> f a) -> (a -> Mon f a) -> a -> f a forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> Mon f a f))