changeset 18:8ff2349f36c6

Wrote treeMap function
author Michael Pavone <pavone@retrodev.com>
date Fri, 25 Jul 2014 21:56:26 -0700
parents c33dce59ce3d
children 84f595cff062
files code/mike00.lm
diffstat 1 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/code/mike00.lm	Fri Jul 25 21:40:49 2014 -0700
+++ b/code/mike00.lm	Fri Jul 25 21:56:26 2014 -0700
@@ -88,6 +88,28 @@
 		get: idx fromTree: (tree tail) size: size
 	}
 	
+	treeMap:size <- :tree fun :size {
+		ret <- 0
+		half <- size / 2
+		if: size = 2 {
+			ret <- #[(fun: (tree value)) (fun: (tree tail))]
+		} else: {
+			if: size = 1 {
+				ret <- #[(fun: (tree value)) 0]
+			} else: {
+				ret <- #[
+					(treeMap: (tree value) fun size: half)
+					(treeMap: (tree tail) fun size: size-half)
+				]
+			}
+		}
+		ret
+	}
+	
+	treeMap <- :tree fun {	
+		#[(tree value) (treeMap: (tree tail) fun size: (tree value))]
+	}
+	
 	height <- 0
 	width <- 0
 	
@@ -106,6 +128,7 @@
 		print: (get: 0 fromTree: tree)
 		print: (get: 6 fromTree: tree)
 		print: (get: 8 fromTree: tree)
+		print: (treeMap: tree :el { el + 1 })
 	}
 	
 }
\ No newline at end of file