1module Effectful.Writer.Dynamic
19import Effectful.Internal.Effect
20import Effectful.Internal.Monad
21import Effectful.Interpreter
23import qualified Effectful.Writer as WP
24import qualified Effectful.Writer.MVar as WM
26data Writer w :: Effect where
27 Writer :: (a, w) -> Writer w m a
28 Tell :: ~w -> Writer w m ()
29 Listen :: m a -> Writer w m (a, w)
31----------------------------------------
34runWriter :: Monoid w => Eff (Writer w : es) a -> Eff es (a, w)
35runWriter = reinterpretM WP.runWriter writerPure
37execWriter :: Monoid w => Eff (Writer w : es) a -> Eff es w
38execWriter = reinterpretM WP.execWriter writerPure
41 :: (WP.Writer w :> localEs, Monoid w)
42 => RunIn es (Eff localEs)
43 -> Writer w (Eff es) a
46 Writer aw -> WP.writer aw
48 Listen m -> WP.listen (run m)
50----------------------------------------
53runWriterMVar :: Monoid w => Eff (Writer w : es) a -> Eff es (a, w)
54runWriterMVar = reinterpretM WM.runWriter writerMVar
56execWriterMVar :: Monoid w => Eff (Writer w : es) a -> Eff es w
57execWriterMVar = reinterpretM WM.execWriter writerMVar
60 :: (WM.Writer w :> localEs, Monoid w)
61 => RunIn es (Eff localEs)
62 -> Writer w (Eff es) a
65 Writer aw -> WM.writer aw
67 Listen m -> WM.listen (run m)
69----------------------------------------
72writer :: (Writer w :> es, Monoid w) => (a, w) -> Eff es a
75tell :: (Writer w :> es, Monoid w) => w -> Eff es ()
78listen :: (Writer w :> es, Monoid w) => Eff es a -> Eff es (a, w)
82 :: (Writer w :> es, Monoid w)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list