concrete functor and monad transformers
#80Proposal: ContT : add minimal usage example of delimited continuations
Since shift/reset are not intuitive, I'd like to add at least one example to the ContT haddock, something along the lines of :
-- | demonstration of non-local control flow with a single shift/reset pair
--
-- λ> run t1
-- ('b',"b_a")
t1 :: ContT Char (State [Char]) Char
t1 = resetT $ do
let
x = 'a' -- input
cons w = lift $ modify (w :)
r <- shiftT $ \k -> do
cons x -- initial state uses the input
let x' = succ x -- compute a function of the input
y <- lift $ k x' -- delegate to the continuation k
cons y -- mutate state with the return value of k
pure x'
cons '_'
pure r