end = E
and R : Monad.READER with type env = E.env = struct
type env = E.env
- module Made = Monad.Reader(E)
- include Made.M
+ module R_E = Monad.Reader(E)
+ include = R_E.M
end
(* monadic version of `let x = 2 in let f = \y -> y + x in f 3` *)
let (expr4 : int R.t) = R.(letx (mid 2) (letf (mid lambda1) (getf >>= fun f -> f (mid 3))))
-let res = R.run expr4 env0
+let res = R.run expr4 env0 (* will be 5 *)