+TreeReader.monadize asker t1 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 asker t1 env;;
+ * or:
+ * ...
+ * let env = fun i -> i + i in
+ * let module Monad = struct
+ * type env = int -> int;;
+ * type 'a m = env -> 'a;;
+ * let unit a : 'a m = fun e -> a;;
+ * let bind (u : 'a m) (f : 'a -> 'b m) : 'b m =
+ * fun e -> f (u e) e;;
+ * end in
+ * let module T = Tree_monadizer(Monad) in
+ * T.monadize asker t1 env;;
+ * or:
+ * ...
+ * let module T = Tree_monadizer(struct
+ * type env = int -> int;;
+ * type 'a m = env -> 'a;;
+ * let unit a : 'a m = fun e -> a;;
+ * let bind (u : 'a m) (f : 'a -> 'b m) : 'b m =
+ * fun e -> f (u e) e;;
+ * end) in
+ * T.monadize asker t1 env;;
+ *)
+