The computation op in the earlier
section is a Function1 that may need to be composed with a monadic pipeline containing a
List or an Option. We need monad transformers for this kind of composition 22 . But
Function1 doesn’t have any transformer that can be used to stack up our computation into a
monadic pipeline. We solve this by introducing another level of indirection. We wrap
Function1 into another abstraction that we call Reader. And as we will see in chapter 5
Reader can have a transformer ReaderT, which can be used to compose other monads with
the Reader.

but there is only implementation of reader monad for usage without any optional / list. it would be extremely useful at this point to see a real example as the text says for Option/List where the reader monad would actually help us!