Should Effects be Monads as well?
Currently, Effects can be implemented in a way that they can as well be used as explicit monads wrapping around some value. This is illustrated in the design for monadic lifting where man_or_boy is implemented using handles first as a monad an then as an effect.
It is nice to have this duality and show that both approaches are equivalent, but it adds to the complexity of base library feature effect that uses effectMode.plain for monadic use and the other effect modes for installed effects. It also makes it more confusing for a user to implement effects, requiring dummy unit values to be passed around when a monad/effect is used as an effect.
At least, the effect modes should be documented better.
Or should we better completely separate effects and monads and, e.g., split up handles into handles_monad and handles_effect (which could be called just handles for convenience)?