Quel est le but de la monade de lecture?

La monade du lecteur est si complexe et semble inutile. Dans un langage impératif comme Java ou C ++, il n'y a pas de concept équivalent pour la monade du lecteur, si je ne me trompe pas. Pouvez-vous me donner un exemple simple et éclaircir un peu