{-# 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 :: Type -> Type) m. f m -> Mon f m
Mon ((a -> f a) -> f a
forall (m :: Type -> Type) a. MonadFix m => (a -> m a) -> m a
mfix (Mon f a -> f a
forall (f :: Type -> Type) 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))