on ae@dev-script help sign in
28 lines 952 B history raw
1-- | This module defines the 'DynamicWriter' class.
2{-# LANGUAGE ConstraintKinds #-}
3{-# LANGUAGE CPP #-}
4{-# LANGUAGE FlexibleInstances #-}
5{-# LANGUAGE FunctionalDependencies #-}
6{-# LANGUAGE UndecidableInstances #-}
7#ifdef USE_REFLEX_OPTIMIZER
8{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
9#endif
10module Reflex.DynamicWriter.Class
11 ( MonadDynamicWriter
12 , DynamicWriter(..)
13 ) where
15import Control.Monad.Reader (ReaderT, lift)
16import Reflex.Class (Dynamic)
18{-# DEPRECATED MonadDynamicWriter "Use 'DynamicWriter' instead" #-}
19-- | Type synonym for 'DynamicWriter'
20type MonadDynamicWriter = DynamicWriter
22-- | 'MonadDynamicWriter' efficiently collects 'Dynamic' values using 'tellDyn'
23-- and combines them monoidally to provide a 'Dynamic' result.
24class (Monad m, Monoid w) => DynamicWriter t w m | m -> t w where
25 tellDyn :: Dynamic t w -> m ()
27instance DynamicWriter t w m => DynamicWriter t w (ReaderT r m) where
28 tellDyn = lift . tellDyn