on master help sign in
Use <> instead of mappend as we're using new enough GHC
b37e40bAndrzej Rybczak
src/Effectful/Writer.hs+4−4
@@ -30,10 +30,10 @@ execWriter m = do
30 pure w
30 pure w
31
31
32writer :: (Writer w :> es, Monoid w) => (a, w) -> Eff es a
32writer :: (Writer w :> es, Monoid w) => (a, w) -> Eff es a
33−writer (a, w) = stateEffect $ \(IdE (Writer w0)) -> (a, IdE (Writer (w0 `mappend` w)))
33+writer (a, w) = stateEffect $ \(IdE (Writer w0)) -> (a, IdE (Writer (w0 <> w)))
34
34
35tell :: (Writer w :> es, Monoid w) => w -> Eff es ()
35tell :: (Writer w :> es, Monoid w) => w -> Eff es ()
36−tell w = stateEffect $ \(IdE (Writer w0)) -> ((), IdE (Writer (w0 `mappend` w)))
36+tell w = stateEffect $ \(IdE (Writer w0)) -> ((), IdE (Writer (w0 <> w)))
37
37
38listen
38listen
39 :: forall w es a. (Writer w :> es, Monoid w)
39 :: forall w es a. (Writer w :> es, Monoid w)
@@ -43,8 +43,8 @@ listen (Eff m) = unsafeEff $ \es -> mask $ \restore -> do
43 w0 <- unsafeStateEnv (\(IdE (Writer w)) -> (w, IdE (Writer mempty))) es
43 w0 <- unsafeStateEnv (\(IdE (Writer w)) -> (w, IdE (Writer mempty))) es
44 -- If an exception is thrown, restore e0 and keep parts of e1.
44 -- If an exception is thrown, restore e0 and keep parts of e1.
45 a <- restore (m es) `onException`
45 a <- restore (m es) `onException`
46− unsafeModifyEnv (\(IdE (Writer w)) -> IdE (Writer (w0 `mappend` w))) es
46+ unsafeModifyEnv (\(IdE (Writer w)) -> IdE (Writer (w0 <> w))) es
47− w1 <- unsafeStateEnv (\(IdE (Writer w)) -> (w, IdE (Writer (w0 `mappend` w)))) es
47+ w1 <- unsafeStateEnv (\(IdE (Writer w)) -> (w, IdE (Writer (w0 <> w)))) es
48 pure (a, w1)
48 pure (a, w1)
49
49
50listens
50listens
src/Effectful/Writer/Dynamic.hs+2−2
@@ -38,7 +38,7 @@ execWriter :: Monoid w => Eff (Writer w : es) a -> Eff es w
38execWriter = reinterpretM WP.execWriter writerPure
38execWriter = reinterpretM WP.execWriter writerPure
39
39
40writerPure
40writerPure
41− :: (Monoid w, WP.Writer w :> localEs)
41+ :: (WP.Writer w :> localEs, Monoid w)
42 => RunIn es (Eff localEs)
42 => RunIn es (Eff localEs)
43 -> Writer w (Eff es) a
43 -> Writer w (Eff es) a
44 -> Eff localEs a
44 -> Eff localEs a
@@ -57,7 +57,7 @@ execWriterMVar :: Monoid w => Eff (Writer w : es) a -> Eff es w
57execWriterMVar = reinterpretM WM.execWriter writerMVar
57execWriterMVar = reinterpretM WM.execWriter writerMVar
58
58
59writerMVar
59writerMVar
60− :: (Monoid w, WM.Writer w :> localEs)
60+ :: (WM.Writer w :> localEs, Monoid w)
61 => RunIn es (Eff localEs)
61 => RunIn es (Eff localEs)
62 -> Writer w (Eff es) a
62 -> Writer w (Eff es) a
63 -> Eff localEs a
63 -> Eff localEs a
src/Effectful/Writer/MVar.hs+3−3
@@ -33,12 +33,12 @@ execWriter m = do
33writer :: (Writer w :> es, Monoid w) => (a, w) -> Eff es a
33writer :: (Writer w :> es, Monoid w) => (a, w) -> Eff es a
34writer (a, w1) = do
34writer (a, w1) = do
35 IdE (Writer v) <- getEffect
35 IdE (Writer v) <- getEffect
36− unsafeEff_ . modifyMVar v $ \w0 -> let w = w0 `mappend` w1 in w `seq` pure (w, a)
36+ unsafeEff_ . modifyMVar v $ \w0 -> let w = w0 <> w1 in w `seq` pure (w, a)
37
37
38tell :: (Writer w :> es, Monoid w) => w -> Eff es ()
38tell :: (Writer w :> es, Monoid w) => w -> Eff es ()
39tell w1 = do
39tell w1 = do
40 IdE (Writer v) <- getEffect
40 IdE (Writer v) <- getEffect
41− unsafeEff_ . modifyMVar_ v $ \w0 -> let w = w0 `mappend` w1 in w `seq` pure w
41+ unsafeEff_ . modifyMVar_ v $ \w0 -> let w = w0 <> w1 in w `seq` pure w
42
42
43listen
43listen
44 :: forall w es a. (Writer w :> es, Monoid w)
44 :: forall w es a. (Writer w :> es, Monoid w)
@@ -58,7 +58,7 @@ listen (Eff m) = unsafeEff $ \es -> uninterruptibleMask $ \restore -> do
58 w1 <- readMVar v1
58 w1 <- readMVar v1
59 -- The mask is uninterruptible because modifyMVar_ v0 might block and if
59 -- The mask is uninterruptible because modifyMVar_ v0 might block and if
60 -- we get an async exception while waiting, w1 will be lost.
60 -- we get an async exception while waiting, w1 will be lost.
61− modifyMVar_ v0 $ \w0 -> let w = w0 `mappend` w1 in w `seq` pure w
61+ modifyMVar_ v0 $ \w0 -> let w = w0 <> w1 in w `seq` pure w
62 pure w1
62 pure w1
63
63
64listens
64listens