*)
-let int_getter : int -> int Reader_monad.monad =
+let asker : int -> int Reader_monad.monad =
fun (a : int) -> fun (env : int -> int) -> env a;;
-(* int_getter takes an int and returns a Reader monad that
+(* asker takes an int and returns a Reader monad that
* "looks up" that int in the environment (i.e. modifies it)
* this is structurally parallel to the function `lookup` we used
* before to "look up" variables in the environment *)
(* double each leaf *)
let env = fun i -> i + i in
-TreeReader.monadize t1 int_getter env;;
+TreeReader.monadize t1 asker env;;
(* You can also avoid declaring a separate toplevel TreeReader module
* (or even a separate Reader_monad module) by using one of these forms:
* ...
* let module T = Tree_monadizer(Reader_monad) in
- * T.monadize t1 int_getter env;;
+ * T.monadize t1 asker env;;
* or:
* ...
* let env = fun i -> i + i in
* fun e -> f (u e) e;;
* end in
* let module T = Tree_monadizer(Monad) in
- * T.monadize t1 int_getter env;;
+ * T.monadize t1 asker env;;
* or:
* ...
* let module T = Tree_monadizer(struct
* let bind (u : 'a m) (f : 'a -> 'b m) : 'b m =
* fun e -> f (u e) e;;
* end) in
- * T.monadize t1 int_getter env;;
+ * T.monadize t1 asker env;;
*)
(* square each leaf *)
let env = fun i -> i * i in
-TreeReader.monadize t1 int_getter env;;
+TreeReader.monadize t1 asker env;;