Experimenting with alternatives for generic monad par class