on ae@dev-script help sign in
26 lines 777 B history raw
1-- | This module defines the 'EventWriter' class.
2{-# LANGUAGE CPP #-}
3{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE FunctionalDependencies #-}
5{-# LANGUAGE UndecidableInstances #-}
6#ifdef USE_REFLEX_OPTIMIZER
7{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
8#endif
9module Reflex.EventWriter.Class
10 ( EventWriter (..)
11 ) where
13import Control.Monad.Reader (ReaderT, lift)
14import Data.Semigroup (Semigroup)
16import Reflex.Class (Event)
19-- | 'EventWriter' efficiently collects 'Event' values using 'tellEvent'
20-- and combines them via 'Semigroup' to provide an 'Event' result.
21class (Monad m, Semigroup w) => EventWriter t w m | m -> t w where
22 tellEvent :: Event t w -> m ()
25instance EventWriter t w m => EventWriter t w (ReaderT r m) where
26 tellEvent = lift . tellEvent