There's a benefit in using the monadic interface though: software is written in a uniform style, regardless of the effect.
I was just about to say it: I think main benefit is (ironically) readability - by saying explicitly Reader<Dependencies, string> you clearly communicate your intent (assuming others know the concept as well, of course 😄).
I was just about to say it: I think main benefit is (ironically) readability - by saying explicitly
Reader<Dependencies, string>
you clearly communicate your intent (assuming others know the concept as well, of course 😄).That's right, you write programs by composing kleisli arrows
A -> M<B>
, for some effectM
.So
Reader
(orReaderEither
,ReaderTaskEither
,Option
,Either
, etc...) is just one of the possible effects