on bc216da help sign in
24 lines 815 B history raw
1-- | This module defines the 'MonadDynamicWriter' class.
2{-# LANGUAGE CPP #-}
3{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE FunctionalDependencies #-}
5{-# LANGUAGE MultiParamTypeClasses #-}
6{-# LANGUAGE UndecidableInstances #-}
7#ifdef USE_REFLEX_OPTIMIZER
8{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
9#endif
10module Reflex.DynamicWriter.Class
11 ( MonadDynamicWriter (..)
12 ) where
14import Control.Monad.Reader (ReaderT, lift)
15import Reflex.Class (Dynamic)
17-- | 'MonadDynamicWriter' efficiently collects 'Dynamic' values using 'tellDyn'
18-- and combines them monoidally to provide a 'Dynamic' result.
19class (Monad m, Monoid w) => MonadDynamicWriter t w m | m -> t w where
20 tellDyn :: Dynamic t w -> m ()
22instance MonadDynamicWriter t w m => MonadDynamicWriter t w (ReaderT r m) where
23 tellDyn = lift . tellDyn