From: Jim Pryor Date: Mon, 13 Dec 2010 04:11:19 +0000 (-0500) Subject: manip trees tweak X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=bb19dcdf2674eb682f017f93178056851bd4afb9 manip trees tweak Signed-off-by: Jim Pryor --- diff --git a/manipulating_trees_with_monads.mdwn b/manipulating_trees_with_monads.mdwn index 4f91bbbb..e309faab 100644 --- a/manipulating_trees_with_monads.mdwn +++ b/manipulating_trees_with_monads.mdwn @@ -57,7 +57,7 @@ new leaves, and maps that function over all the leaves in the tree, 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))) @@ -80,7 +80,7 @@ each leaf instead, by supplying the appropriate `int -> int` operation 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))) @@ -140,7 +140,7 @@ It would be a simple matter to turn an *integer* into an `int reader`: 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