Mercurial > repos > icfp2014
annotate code/mike00.lm @ 48:8b6f6e2cbf38
merge
author | William Morgan <billjunk@mrgn.org> |
---|---|
date | Sun, 27 Jul 2014 02:35:24 -0700 |
parents | abd8ceef0dd8 |
children |
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 | 48 filter <- :lst pred { |
49 new <- [] | |
50 while: { not: (lst isInteger?) } do: { | |
51 if: (pred: (lst value)) { | |
52 new <- (lst value) | new | |
53 } else: {} | |
54 lst <- lst tail | |
55 } | |
56 reverse: new | |
57 } | |
27 | 58 |
59 flatten <- :lst { | |
60 fold: lst [] with: :acc el { | |
61 fold: el acc with: :iacc iel { | |
62 iel | iacc | |
63 } | |
64 } | |
65 } | |
21 | 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 | 118 treeMap:size <- :tree fun :size { |
119 ret <- 0 | |
120 half <- size / 2 | |
121 if: size = 2 { | |
122 ret <- #[(fun: (tree value)) (fun: (tree tail))] | |
123 } else: { | |
124 if: size = 1 { | |
125 ret <- #[(fun: (tree value)) 0] | |
126 } else: { | |
127 ret <- #[ | |
128 (treeMap: (tree value) fun size: half) | |
129 (treeMap: (tree tail) fun size: size-half) | |
130 ] | |
131 } | |
132 } | |
133 ret | |
134 } | |
135 | |
136 treeMap <- :tree fun { | |
137 #[(tree value) (treeMap: (tree tail) fun size: (tree value))] | |
138 } | |
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 | 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 | 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 | 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 | 205 } |