2 ms·
Your description sounds about right! I learned to understand it [0][1] as a way of creating free monads by wishing for a list of effects at the type level. The
by black_knight 1y ago
Your description sounds about right!
I learned to understand it [0][1] as a way of creating free monads by wishing for a list of effects at the type level. Then later you worry about how to implement the effects. Solves the same problem as monad transformers, but without commit to an order up front (and without all the boilerplate of mtl).
My idea is that you should be able to create and pass around typed capabilities for effects, and then transparently get them “effectuated at their place of creation”.
[0] : http://okmij.org/ftp/Haskell/extensible/more.pdf http://okmij.org/ftp/Haskell/extensible/more.pdf
[1] : https://hackage.haskell.org/package/freer-simple https://hackage.haskell.org/package/freer-simple
- tome 1y agoHave you seen my effect system Bluefin? It sounds like exactly what you're describing: https://hackage-content.haskell.org/package/bluefin-0.0.16.0/docs/Bluefin.html https://hackage-content.haskell.org/package/bluefin-0.0.16.0... Happy to answer any questions about it, either here, or if you open an issue: https://github.com/tomjaguarpaw/bluefin/issues/new https://github.com/tomjaguarpaw/bluefin/issues/new
- black_knight 1y agoNice! This looks very interesting. Will for sure check it out.