# 📖Do be do be do

- authors
- Sam Lindley AND Conor McBride AND Craig McLaughlin
- year
- 2016

based on Plotkin and Power’s algebraic effects

- and Plotkin and Pretnar’s handlers for algebraic effects

operators generalize functions and effects

- pure function is an operator with no effects

- what
*bidirectional*effect type system means? - what is
*effect polymorphism?* works in strict language (but with possibly delayed computations)

- “The absence of explicit plumbing in Frank depends crucially on the fact that Frank, unlike Haskell, has a fixed evaluation order.”

handling effects is just a function

`state : S -> <State S>X -> X state _ x = x -- this catch-all does not include effects---only values state s <get -> k> = state s (k s) state _ <put s -> k> = state s (k unit)`

handling multiple effects

`pipe : <Send X>Unit -> <Receive X>Y -> [Abort]Y pipe <send x -> s> <receive -> r> = pipe (s unit) (r x) pipe <_> y = y pipe unit <_> = abort!`