@@ -28,6 +28,7 @@ import Reflex.PerformEvent.Class
28import Reflex.PostBuild.Class
28import Reflex.PostBuild.Class
29import Reflex.TriggerEvent.Class
29import Reflex.TriggerEvent.Class
31+import Control.Applicative (liftA2)
31import Control.Monad.Exception
32import Control.Monad.Exception
32import Control.Monad.Identity
33import Control.Monad.Identity
33import Control.Monad.Primitive
34import Control.Monad.Primitive
@@ -39,6 +40,7 @@ import qualified Data.Dependent.Map as DMap
39import Data.Functor.Compose
40import Data.Functor.Compose
40import Data.IntMap.Strict (IntMap)
41import Data.IntMap.Strict (IntMap)
41import qualified Data.IntMap.Strict as IntMap
42import qualified Data.IntMap.Strict as IntMap
43+import qualified Data.Semigroup as S
43-- | Provides a basic implementation of 'PostBuild'.
45-- | Provides a basic implementation of 'PostBuild'.
44newtype PostBuildT t m a = PostBuildT { unPostBuildT :: ReaderT (Event t ()) m a } deriving (Functor, Applicative, Monad, MonadFix, MonadIO, MonadTrans, MonadException, MonadAsyncException)
46newtype PostBuildT t m a = PostBuildT { unPostBuildT :: ReaderT (Event t ()) m a } deriving (Functor, Applicative, Monad, MonadFix, MonadIO, MonadTrans, MonadException, MonadAsyncException)
@@ -50,6 +52,14 @@ newtype PostBuildT t m a = PostBuildT { unPostBuildT :: ReaderT (Event t ()) m a
50runPostBuildT :: PostBuildT t m a -> Event t () -> m a
52runPostBuildT :: PostBuildT t m a -> Event t () -> m a
51runPostBuildT (PostBuildT a) = runReaderT a
53runPostBuildT (PostBuildT a) = runReaderT a
55+-- TODO: Monoid and Semigroup can likely be derived once ReaderT has them.
56+instance (Monoid a, Applicative m) => Monoid (PostBuildT t m a) where
58+ mappend = liftA2 mappend
60+instance (S.Semigroup a, Applicative m) => S.Semigroup (PostBuildT t m a) where
53instance PrimMonad m => PrimMonad (PostBuildT x m) where
63instance PrimMonad m => PrimMonad (PostBuildT x m) where
54 type PrimState (PostBuildT x m) = PrimState m
64 type PrimState (PostBuildT x m) = PrimState m
55 primitive = lift . primitive
65 primitive = lift . primitive