blucontrol-0.5.1.0: src/Blucontrol/Monad/Gamma/Const.hs
{-# LANGUAGE UndecidableInstances #-}
module Blucontrol.Monad.Gamma.Const (
GammaConstT
, runGammaConstT
) where
import Control.Monad.Base
import Control.Monad.Trans
import Control.Monad.Trans.Control
import Control.Monad.Reader
import Blucontrol.Monad.Gamma
newtype GammaConstT c m a = GammaConstT { unGammaConstT :: ReaderT c m a }
deriving (Applicative, Functor, Monad, MonadBase b, MonadBaseControl b, MonadTrans, MonadTransControl)
instance Monad m => MonadGamma (GammaConstT c m) where
type GammaValue (GammaConstT c m) = c
gamma = GammaConstT ask
runGammaConstT :: c -> GammaConstT c m a -> m a
runGammaConstT !rgb tma = runReaderT (unGammaConstT tma) rgb