From: Jim Pryor Date: Wed, 1 Dec 2010 07:29:37 +0000 (-0500) Subject: manip trees: tweaks X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=ba4d5e47c49b739b747ffc15d269faaa98a4bf9c;hp=db35cd7468a6353ab2c15a1381edbc550a2ecc61 manip trees: tweaks Signed-off-by: Jim Pryor --- diff --git a/manipulating_trees_with_monads.mdwn b/manipulating_trees_with_monads.mdwn index d3ccc985..c279c382 100644 --- a/manipulating_trees_with_monads.mdwn +++ b/manipulating_trees_with_monads.mdwn @@ -48,7 +48,7 @@ Our first task will be to replace each leaf with its double: match t with | Leaf x -> Leaf (newleaf x) | Node (l, r) -> Node ((treemap newleaf l), - (treemap newleaf r));; + (treemap newleaf r));; `treemap` takes a function that transforms old leaves into new leaves, and maps that function over all the leaves in the tree, leaving the @@ -87,7 +87,7 @@ to each subpart of the computation. In other words, `treemap` has the behavior of a reader monad. Let's make that explicit. In general, we're on a journey of making our treemap function more and -more flexible. So the next step---combining the tree transducer with +more flexible. So the next step---combining the tree transformer with a reader monad---is to have the treemap function return a (monadized) tree that is ready to accept any `int->int` function and produce the updated tree. @@ -159,7 +159,7 @@ result: - : int tree = Node (Node (Leaf 4, Leaf 9), Node (Leaf 25, Node (Leaf 49, Leaf 121))) -Now that we have a tree transducer that accepts a monad as a +Now that we have a tree transformer that accepts a monad as a parameter, we can see what it would take to swap in a different monad. For instance, we can use a state monad to count the number of nodes in the tree.