changeset 19:84f595cff062

Added tree:set:to function
author Michael Pavone <pavone@retrodev.com>
date Fri, 25 Jul 2014 22:09:54 -0700
parents 8ff2349f36c6
children 5a36fda13a47
files code/mike00.lm code/simple.lm
diffstat 2 files changed, 37 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/code/mike00.lm	Fri Jul 25 21:56:26 2014 -0700
+++ b/code/mike00.lm	Fri Jul 25 22:09:54 2014 -0700
@@ -110,6 +110,39 @@
 		#[(tree value) (treeMap: (tree tail) fun size: (tree value))]
 	}
 	
+	tree:size:set:to <- :tree :size :idx :val {
+		ret <- 0
+		half <- size / 2
+		if: size = 2 {
+			if: idx = 0 {
+				ret <- #[val (tree tail)]
+			} else: {
+				ret <- #[(tree value) val]
+			}
+		} else: {
+			if: size = 1 {
+				ret <- #[val 0]
+			} else: {
+				if: (idx < half) {
+					ret <- #[
+						(tree: (tree value) size: half set: idx to: val)
+						(tree tail)
+					]
+				} else: {
+					ret <- #[
+						(tree value)
+						(tree: (tree tail) size: size-half set: idx-half to: val)
+					]
+				}
+			}
+		}
+		ret
+	}
+	
+	tree:set:to <- :tree :idx :val {
+		#[(tree value) (tree: (tree tail) size: (tree value) set: idx to: val)]
+	}
+	
 	height <- 0
 	width <- 0
 	
@@ -129,6 +162,9 @@
 		print: (get: 6 fromTree: tree)
 		print: (get: 8 fromTree: tree)
 		print: (treeMap: tree :el { el + 1 })
+		print: (tree: tree set: 0 to: 42)
+		print: (tree: tree set: 6 to: 42)
+		print: (tree: tree set: 8 to: 42)
 	}
 	
 }
\ No newline at end of file
--- a/code/simple.lm	Fri Jul 25 21:56:26 2014 -0700
+++ b/code/simple.lm	Fri Jul 25 22:09:54 2014 -0700
@@ -14,6 +14,7 @@
 	}
 	
 	main <- :initWorld mystery {
+		print: mystery
 		#[#[0 counterLoad] step]
 	}
 }
\ No newline at end of file