emm
emm copied to clipboard
A general monad for managing stacking effects
Unable to compile this: ```scala import emm._ import emm.compat.cats._ import cats._ import cats.data.ReaderT import cats.data.ReaderT._ import cats.std.option._ import cats.std.list._ type E = List |: Option |: ReaderT[Id, String, ?] |:...
How bout it? What do you think?
There is now ``` addCompilerPlugin("com.milessabin" % "si2712fix-plugin_2.11.8" % "1.1.0") ``` So start deleting implicits ;-) Maybe even depend on the compiler plugin by default?
It's kinda important to be able to lift into stacks which contain effects in the kleisli category.
This might be an interesting function: ``` scala val e1: Emm[Task |: List |: Option |: Base, A] = ??? e1.flip[List, Option] // => Emm[Task |: Option |: List |:...
No one knows these things exist! Probably because you would literally need to read the implicit resolution chains to learn anything about them…
Right now, it's somewhat difficult to compose functions which return `Emm` but with differing (but potentially still _compatible_) effect stacks. We should have a function which handles this problem. For...
It would be useful to have a function on `Emm`, `transform`, which takes a natural transformation `F ~> G` such that `F` is in the effect stack, and the resulting...