From dc1ec5b8087e29f45203e2aee2e2cfdb10014896 Mon Sep 17 00:00:00 2001 From: Anthony Carrico Date: Wed, 21 Oct 2020 23:30:10 -0400 Subject: [PATCH 1/2] Adds Semigroup instance for EvStream --- Control/FRPNow/EvStream.hs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Control/FRPNow/EvStream.hs b/Control/FRPNow/EvStream.hs index 6d4cbb7..7121955 100644 --- a/Control/FRPNow/EvStream.hs +++ b/Control/FRPNow/EvStream.hs @@ -72,6 +72,9 @@ newtype EvStream a = S { getEs :: Behavior (Event [a]) } instance Functor EvStream where fmap f (S b) = S $ (fmap f <$>) <$> b +instance Semigroup (EvStream a) where + (<>) = merge + instance Monoid (EvStream a) where mempty = emptyEs mappend = merge From 091e40362f93373aee7b2a7e0c78b968e7a9cddb Mon Sep 17 00:00:00 2001 From: Anthony Carrico Date: Wed, 21 Oct 2020 23:32:07 -0400 Subject: [PATCH 2/2] Relaxes pattern match to avoid missing MonadFail instance --- Control/FRPNow/EvStream.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Control/FRPNow/EvStream.hs b/Control/FRPNow/EvStream.hs index 7121955..de4941d 100644 --- a/Control/FRPNow/EvStream.hs +++ b/Control/FRPNow/EvStream.hs @@ -312,7 +312,7 @@ callbackStream = do mv <- sync $ newIORef ([], Nothing) return (S s, func mv) where loop :: IORef ( [a], Maybe (() -> IO ()) ) -> Now ([a], Behavior (Event [a])) loop mv = - do (l, Nothing) <- sync $ readIORef mv + do (l, _) <- sync $ readIORef mv (e,cb) <- callback sync $ writeIORef mv ([], Just cb) es <- planNow $ loop mv <$ e