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