In this article I present a simple relatively boilerplate-free approach to structuring Scala code using monadic abstractions. I use cats but it can be done using any other library, like Scalaz.
Presented approach is nothing new but just well-known patterns used in a cohesive way. In a sense it tries to compete . . .
...from programmer's perspective
What is a monad
Monad is a trait with the following operations:
Having such trait implementation for a type
M makes it a monad instance.
pure is called
bind might instead be named
flatMap (preferred in Scala) or
>>= (Haskell's way). The method names are not so . . .