scala functional programming monads
See more