+[[!toc]]
+
Substitution versus Environment-based Semantics
-----------------------------------------------
(* here's our bind operation; how does it work? *)
let bind (u : 'a reader) (f: 'a -> 'b reader) : 'b reader =
- fun (e : env) -> f (u e) e
+ (* this can be written more compactly, but having it spelled out
+ like this will be useful down the road *)
+ fun (e : env) -> let a = u e in let u' = f a in u' e
+
(* we also define two special-purpose operations on our reader-monad values *)