projects
/
lambda.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ff95f5a
)
edits
author
Chris Barker
<barker@omega.(none)>
Mon, 6 Dec 2010 12:27:10 +0000
(07:27 -0500)
committer
Chris Barker
<barker@omega.(none)>
Mon, 6 Dec 2010 12:27:10 +0000
(07:27 -0500)
manipulating_trees_with_monads.mdwn
patch
|
blob
|
history
diff --git
a/manipulating_trees_with_monads.mdwn
b/manipulating_trees_with_monads.mdwn
index
2ec15d6
..
38f8ff3
100644
(file)
--- a/
manipulating_trees_with_monads.mdwn
+++ b/
manipulating_trees_with_monads.mdwn
@@
-95,8
+95,6
@@
a Reader monad---is to have the `tree_map` function return a (monadized)
tree that is ready to accept any `int -> int` function and produce the
updated tree.
tree that is ready to accept any `int -> int` function and produce the
updated tree.
-\tree (. (. (f 2) (f 3)) (. (f 5) (. (f 7) (f 11))))
-
\f .
_____|____
| |
\f .
_____|____
| |
@@
-267,8
+265,8
@@
it through:
let rec tree_monadize_rev (f : 'a -> 'b state) (t : 'a tree) : 'b tree state =
match t with
| Leaf a -> state_bind (f a) (fun b -> state_unit (Leaf b))
let rec tree_monadize_rev (f : 'a -> 'b state) (t : 'a tree) : 'b tree state =
match t with
| Leaf a -> state_bind (f a) (fun b -> state_unit (Leaf b))
- | Node (l, r) -> state_bind (tree_monadize f r) (fun r' ->
- state_bind (tree_monadize f l) (fun l'
->
+ | Node (l, r) -> state_bind (tree_monadize f r) (fun r' ->
(* R first *)
+ state_bind (tree_monadize f l) (fun l'
-> (* Then L *)
state_unit (Node (l', r'))));;
# tree_monadize_rev (fun a -> fun s -> (s+1, s+1)) t1 0;;
state_unit (Node (l', r'))));;
# tree_monadize_rev (fun a -> fun s -> (s+1, s+1)) t1 0;;
@@
-407,8
+405,6
@@
induction on the structure of the first argument that the tree
resulting from `bind u f` is a tree with the same strucure as `u`,
except that each leaf `a` has been replaced with `f a`:
resulting from `bind u f` is a tree with the same strucure as `u`,
except that each leaf `a` has been replaced with `f a`:
-\tree (. (f a1) (. (. (. (f a2) (f a3)) (f a4)) (f a5)))
-
. .
__|__ __|__
| | | |
. .
__|__ __|__
| | | |
@@
-438,9
+434,6
@@
As for the associative law,
we'll give an example that will show how an inductive proof would
proceed. Let `f a = Node (Leaf a, Leaf a)`. Then
we'll give an example that will show how an inductive proof would
proceed. Let `f a = Node (Leaf a, Leaf a)`. Then
-\tree (. (. (. (. (a1) (a2)))))
-\tree (. (. (. (. (a1) (a1)) (. (a1) (a1)))))
-
.
____|____
. . | |
.
____|____
. . | |