reflex-0.6.2.3: src/Reflex/DynamicWriter/Class.hs
-- | This module defines the 'DynamicWriter' class.
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE UndecidableInstances #-}
#ifdef USE_REFLEX_OPTIMIZER
{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
#endif
module Reflex.DynamicWriter.Class
( MonadDynamicWriter
, DynamicWriter(..)
) where
import Control.Monad.Reader (ReaderT, lift)
import Reflex.Class (Dynamic)
{-# DEPRECATED MonadDynamicWriter "Use 'DynamicWriter' instead" #-}
-- | Type synonym for 'DynamicWriter'
type MonadDynamicWriter = DynamicWriter
-- | 'MonadDynamicWriter' efficiently collects 'Dynamic' values using 'tellDyn'
-- and combines them monoidally to provide a 'Dynamic' result.
class (Monad m, Monoid w) => DynamicWriter t w m | m -> t w where
tellDyn :: Dynamic t w -> m ()
instance DynamicWriter t w m => DynamicWriter t w (ReaderT r m) where
tellDyn = lift . tellDyn