Tijdens sommige types berekeningen, herbruiken we vaak dezelfde waarde. Zo kan een hele collectie functie gebruik maken van eenzelfde Config-object, of kunnen een aantal statements uitgevoerd worden binnen dezelfde scope.

Daarbij krijgen we dan functie van de vorm:

alpha :: x1 -> x2 -> c -> x3
beta :: x4 -> c -> x5
gamma :: c -> x6

Deze c als laatste argument is wat onze Reader monad vormt:

alpha :: x1 -> x2 -> Reader c x3
beta :: x4 -> Reader c x5
gamma :: Reader c x6

Implementeer de Reader Monad en maak ervan gebruik in een gescopete interpreter.