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