bludigon-0.1.0.0: src/Bludigon/Gamma/Const.hs
{-# LANGUAGE UndecidableInstances #-}
module Bludigon.Gamma.Const (
GammaConstT
, runGammaConstT
) where
import Control.Monad.Base
import Control.Monad.Trans
import Control.Monad.Trans.Control
import Control.Monad.Reader
import Bludigon.Gamma
import Bludigon.RGB
newtype GammaConstT m a = GammaConstT { unGammaConstT :: ReaderT Trichromaticity m a }
deriving (Applicative, Functor, Monad, MonadBase b, MonadBaseControl b, MonadTrans, MonadTransControl)
instance Monad m => MonadGamma (GammaConstT m) where
gamma = GammaConstT ask
instance MonadReader r m => MonadReader r (GammaConstT m) where
ask = lift ask
local f tma = liftWith $ \ run ->
local f $ run tma
runGammaConstT :: Trichromaticity -> GammaConstT m a -> m a
runGammaConstT rgb tma = runReaderT (unGammaConstT tma) rgb