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