leaving the structure of the tree unchanged. For instance:
let double i = i + i;;
- tree_map t1 double;;
+ tree_map double t1;;
- : int tree =
Node (Node (Leaf 4, Leaf 6), Node (Leaf 10, Node (Leaf 14, Leaf 22)))
in place of `double`:
let square i = i * i;;
- tree_map t1 square;;
+ tree_map square t1;;
- : int tree =
Node (Node (Leaf 4, Leaf 9), Node (Leaf 25, Node (Leaf 49, Leaf 121)))
asker 2 (fun i -> i + i);;
- : int = 4
-This is a monadic box that waits for an an environment (here, the argument `modifier`) and returns what that environment maps `a` to.
+`asker a` is a monadic box that waits for an an environment (here, the argument `modifier`) and returns what that environment maps `a` to.
How do we do the analagous transformation when our `int`s are scattered over the leaves of a tree? How do we turn an `int tree` into a reader?
A tree is not the kind of thing that we can apply a