{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Data.Semigroup.Monad.Extra (module Data.Semigroup.Monad ) where import Control.Monad.Fix import Control.Monad.State import Data.Semigroup.Monad instance MonadFix f => MonadFix (Mon f) where mfix f = Mon (mfix (getMon . f)) instance MonadState s m => MonadState s (Mon m) where get = Mon get put = Mon . put state = Mon . state