scala functional programming monads
Tout plus