packages feed

changeset-0.1.0.0: src-mtl23/Control/Monad/Trans/Changeset/Orphan.hs

{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

{- | Orphan instances for 'MonadAccum' and 'MonadSelect'.

Unfortunately @mtl-2.3@ is not very compatible with GHC < 9.6.
Therefore these instances are only defined for GHC >= 9.6.
-}
module Control.Monad.Trans.Changeset.Orphan where

-- transformers
import Control.Monad.Trans.Class (lift)

-- changeset
import Control.Monad.Trans.Changeset

-- mtl
import Control.Monad.Accum (MonadAccum (..))
import Control.Monad.Select (MonadSelect (..))
import Data.Monoid.RightAction

instance (MonadAccum w m, RightAction w' s, Monoid w') => MonadAccum w (ChangesetT s w' m) where
  accum = lift . accum

instance (MonadSelect r m, RightAction w s, Monoid w) => MonadSelect r (ChangesetT s w m) where
  select = lift . select