scala monad logic programming applicative extensible effects haskell
See more