# 📖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!`