annotate code/mike00.lm @ 82:ea6a0709373f

Updated README
author Michael Pavone <pavone@retrodev.com>
date Mon, 28 Jul 2014 04:38:29 -0700
parents abd8ceef0dd8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #{
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 length <- :lst {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3 len <- []
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 while: { not: (lst isInteger?)} do: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5 lst <- lst tail
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 len <- len + 1
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 len
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 reverse <- :lst {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 new <- []
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 while: { not: (lst isInteger?)} do: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 new <- (lst value) | new
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 lst <- lst tail
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 new
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 split:at <- :lst :pos {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 first <- []
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 i <- 0
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 while: { i < pos } do: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 first <- (lst value) | first
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 lst <- lst tail
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 i <- i + 1
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 #[(reverse: first) lst]
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 map <- :lst fun {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 new <- []
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33 while: { not: (lst isInteger?) } do: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
34 new <- (fun: (lst value)) | new
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
35 lst <- lst tail
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37 reverse: new
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
39
20
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
40 fold:with <- :lst acc :fun {
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
41 while: { not: (lst isInteger?) } do: {
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
42 acc <- fun: acc (lst value)
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
43 lst <- lst tail
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
44 }
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
45 acc
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
46 }
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
47
21
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
48 filter <- :lst pred {
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
49 new <- []
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
50 while: { not: (lst isInteger?) } do: {
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
51 if: (pred: (lst value)) {
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
52 new <- (lst value) | new
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
53 } else: {}
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
54 lst <- lst tail
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
55 }
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
56 reverse: new
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
57 }
27
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
58
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
59 flatten <- :lst {
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
60 fold: lst [] with: :acc el {
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
61 fold: el acc with: :iacc iel {
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
62 iel | iacc
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
63 }
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
64 }
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
65 }
21
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
66
17
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
67 makeTree:size <- :lst :size {
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
68 ret <- 0
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
69 sub <- 0
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
70 half <- size / 2
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
71 if: size = 2 {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
72 ret <- #[(lst value) ((lst tail) value)]
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
73 } else: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
74 if: size = 1 {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
75 ret <- lst
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
76 } else: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
77 sub <- split: lst at: half
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
78 ret <- #[
17
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
79 (makeTree: (sub value) size: half)
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
80 (makeTree: (sub tail) size: size-half)
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
81 ]
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
82 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
83 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
84 ret
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
85 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
86
17
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
87 makeTree <- :lst {
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
88 size <- lst length
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
89 #[size (makeTree: lst size: size)]
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
90 }
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
91
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
92 get:fromTree:size <- :idx :tree :size {
17
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
93 print: #[1 tree size]
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
94 ret <- 0
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
95 half <- size / 2
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
96 if: size <= 2 {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
97 if: idx = 0 {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
98 ret <- tree value
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
99 } else: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
100 ret <- tree tail
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
101 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
102 } else: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
103 if: idx < half {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
104 ret <- get: idx fromTree: (tree value) size: half
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
105 } else: {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
106 ret <- get: idx-half fromTree: (tree tail) size: size-half
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
107 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
108 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
109 ret
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
110 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
111
17
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
112 get:fromTree <- :idx :tree {
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
113 size <- tree value
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
114 print: #[0 size]
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
115 get: idx fromTree: (tree tail) size: size
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
116 }
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
117
18
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
118 treeMap:size <- :tree fun :size {
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
119 ret <- 0
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
120 half <- size / 2
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
121 if: size = 2 {
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
122 ret <- #[(fun: (tree value)) (fun: (tree tail))]
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
123 } else: {
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
124 if: size = 1 {
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
125 ret <- #[(fun: (tree value)) 0]
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
126 } else: {
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
127 ret <- #[
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
128 (treeMap: (tree value) fun size: half)
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
129 (treeMap: (tree tail) fun size: size-half)
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
130 ]
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
131 }
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
132 }
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
133 ret
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
134 }
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
135
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
136 treeMap <- :tree fun {
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
137 #[(tree value) (treeMap: (tree tail) fun size: (tree value))]
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
138 }
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
139
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
140 tree:size:update:with <- :tree :size :idx :fun {
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
141 ret <- 0
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
142 half <- size / 2
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
143 if: size = 2 {
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
144 if: idx = 0 {
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
145 ret <- #[(fun: (tree value)) (tree tail)]
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
146 } else: {
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
147 ret <- #[(tree value) (fun: (tree tail))]
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
148 }
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
149 } else: {
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
150 if: size = 1 {
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
151 ret <- #[(fun: (tree value)) 0]
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
152 } else: {
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
153 if: (idx < half) {
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
154 ret <- #[
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
155 (tree: (tree value) size: half update: idx with: fun)
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
156 (tree tail)
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
157 ]
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
158 } else: {
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
159 ret <- #[
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
160 (tree value)
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
161 (tree: (tree tail) size: size-half update: idx-half with: fun)
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
162 ]
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
163 }
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
164 }
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
165 }
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
166 ret
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
167 }
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
168
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
169 tree:update:with <- :tree :idx :fun {
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
170 #[(tree value) (tree: (tree tail) size: (tree value) update: idx with: fun)]
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
171 }
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
172
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
173 tree:set:to <- :tree :idx :val {
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
174 tree: tree update: idx with: :el { val }
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
175 }
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
176
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
177 height <- 0
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
178 width <- 0
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
179
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
180 main <- {
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
181 /* map <- initWorld value
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
182 height <- map length
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
183 width <- (map value) length
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
184 */
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
185
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
186 lst <- [1 2 3 4 5 6 7 8 9]
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
187 print: (length: lst)
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
188 print: (map: lst :el { el + 1 })
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
189 print: (split: lst at: (length: lst) / 2)
17
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
190 tree <- makeTree: lst
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
191 print: tree
17
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
192 print: (get: 0 fromTree: tree)
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
193 print: (get: 6 fromTree: tree)
c33dce59ce3d Store tree size in outer node so it does not need to be manually passed in
Michael Pavone <pavone@retrodev.com>
parents: 16
diff changeset
194 print: (get: 8 fromTree: tree)
18
8ff2349f36c6 Wrote treeMap function
Michael Pavone <pavone@retrodev.com>
parents: 17
diff changeset
195 print: (treeMap: tree :el { el + 1 })
19
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
196 print: (tree: tree set: 0 to: 42)
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
197 print: (tree: tree set: 6 to: 42)
84f595cff062 Added tree:set:to function
Michael Pavone <pavone@retrodev.com>
parents: 18
diff changeset
198 print: (tree: tree set: 8 to: 42)
20
5a36fda13a47 Added fold:with function
Michael Pavone <pavone@retrodev.com>
parents: 19
diff changeset
199 print: (fold: lst 0 with: :acc el { acc + el })
21
5a27dd6f03cd Added filter function
Michael Pavone <pavone@retrodev.com>
parents: 20
diff changeset
200 print: (filter: lst :el { el > 4 })
22
edc89d9c9e10 Added tree:update:with function. Reimplemented tree:set:to with tree:update:with
Michael Pavone <pavone@retrodev.com>
parents: 21
diff changeset
201 print: (tree: tree update: 8 with: :el { el + 29 })
27
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
202 print: (flatten: [lst lst lst])
14
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
203 }
ce68c8a607ee Added a new file for experimenting with some helper functions
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
204
27
abd8ceef0dd8 Added flatten function
William Morgan <billjunk@mrgn.org>
parents: 22
diff changeset
205 }