# HG changeset patch # User Michael Pavone # Date 1406351394 25200 # Node ID 84f595cff06280148cc32556923a7ba6abf80a58 # Parent 8ff2349f36c652728e7ceb16b97cb2d53490c37d Added tree:set:to function diff -r 8ff2349f36c6 -r 84f595cff062 code/mike00.lm --- 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 diff -r 8ff2349f36c6 -r 84f595cff062 code/simple.lm --- 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