Mercurial > repos > rhope
annotate extendlib.rhope @ 74:a844c623c7df
Add support for Worker type
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 01 Jul 2010 21:32:08 -0400 |
parents | d0ce696786cc |
children | 0083b2f7b3c7 |
rev | line source |
---|---|
0 | 1 |
2 Val[in:out] | |
3 { | |
4 out <- in | |
5 } | |
6 | |
7 _Map[list,index,worker:out] | |
8 { | |
9 newval <- [ | |
10 [worker]Do[ | |
11 [()]Append[ [list]Index[index] ] | |
12 ] | |
13 ]Index[0] | |
14 | |
15 [list]Next[index] | |
16 { | |
17 out <- [_Map[list, ~, worker]]Set[index, newval] | |
18 }{ | |
19 out <- [list]Set[index, newval] | |
20 } | |
21 } | |
22 | |
23 Map[list,worker:out] | |
24 { | |
25 [list]First | |
26 { | |
27 out <- _Map[list, ~, worker] | |
28 }{ | |
29 out <- list | |
30 } | |
31 } | |
32 | |
48
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
33 _SMap[list,index,worker:out] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
34 { |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
35 newval <- [ |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
36 [worker]Do[ |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
37 [()]Append[ [list]Index[index] ] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
38 ] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
39 ]Index[0] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
40 |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
41 [list]Next[index] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
42 { |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
43 out <- _SMap[[list]Set[index, newval], ~, worker] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
44 }{ |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
45 out <- [list]Set[index, newval] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
46 } |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
47 } |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
48 |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
49 SMap[list,worker:out] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
50 { |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
51 [list]First |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
52 { |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
53 out <- _SMap[list, ~, worker] |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
54 }{ |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
55 out <- list |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
56 } |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
57 } |
a24eb366195c
Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents:
47
diff
changeset
|
58 |
0 | 59 _Key Value Map[list,index,newlist,worker:out] |
60 { | |
61 [worker]Do[ | |
62 [[()]Append[ [list]Index[index] ]]Append[index] | |
63 ] | |
64 { | |
65 newval <- [~]Index[0] | |
66 newkey <- [~]Index[1] | |
67 } | |
68 | |
69 next <- [newlist]Set[newkey, newval] | |
70 | |
71 [list]Next[index] | |
72 { | |
73 out <- _Key Value Map[list, ~, next, worker] | |
74 }{ | |
75 out <- Val[next] | |
76 } | |
77 } | |
78 | |
79 New Like@List[in:out] | |
80 { | |
81 out <- () | |
82 } | |
83 | |
84 New Like@Dictionary[in:out] | |
85 { | |
47
6202b866d72c
Cleaned up constructor names and merged some other changes in to support the Rhope website
Mike Pavone <pavone@retrodev.com>
parents:
30
diff
changeset
|
86 out <- Dictionary[] |
0 | 87 } |
88 | |
89 Key Value Map[list,worker:out] | |
90 { | |
91 [list]First | |
92 { | |
93 out <- _Key Value Map[list, ~, New Like[list], worker] | |
94 }{ | |
95 out <- New Like[list] | |
96 } | |
97 } | |
98 | |
1
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
99 To String@String[string:out] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
100 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
101 out <- string |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
102 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
103 |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
104 Empty@String[string:out] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
105 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
106 out <- "" |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
107 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
108 |
0 | 109 In[needle,haystack:found?] |
110 { | |
1
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
111 [haystack]Get DString[To String[needle]] |
0 | 112 { |
113 found? <- Yes | |
114 } {} {} { | |
115 found? <- No | |
116 } | |
117 } | |
118 | |
119 Left Trim[string,trim:trimmed] | |
120 { | |
121 If[ [[string]Length] > [0] ] | |
122 { | |
123 first,rest <- [string]Slice[1] | |
124 If[ [first]In[trim] ] | |
125 { | |
126 trimmed <- Left Trim[rest, trim] | |
127 }{ | |
128 trimmed <- string | |
129 } | |
130 }{ | |
131 trimmed <- string | |
132 } | |
133 } | |
134 | |
135 Right Trim[string,trim:trimmed] | |
136 { | |
137 If[ [[string]Length] > [0] ] | |
138 { | |
139 rest,last <- [string]Slice[ [[string]Length] - [1]] | |
140 If[ [last]In[trim] ] | |
141 { | |
142 trimmed <- Right Trim[rest, trim] | |
143 }{ | |
144 trimmed <- string | |
145 } | |
146 }{ | |
147 trimmed <- string | |
148 } | |
149 } | |
150 | |
151 Trim[string,trim:trimmed] | |
152 { | |
153 left <- Left Trim[string, trim] | |
154 trimmed <- Right Trim[left, trim] | |
155 } | |
156 | |
157 Max[a,b:max] | |
158 { | |
159 If[[a] > [b]] | |
160 { | |
161 max <- a | |
162 }{ | |
163 max <- b | |
164 } | |
165 } | |
166 | |
167 Count Substring[string,substring:out] | |
168 { | |
169 out <- Max[[[[string]Split[substring]]Length] - [1], 0] | |
170 } | |
171 | |
172 _Key Value Join[dict,key,key sep,val sep,string:out] | |
173 { | |
174 new string <- [[[string]Append[key]]Append[key sep]]Append[ [dict]Index[key] ] | |
175 [dict]Next[key] | |
176 { | |
177 out <- _Key Value Join[dict, ~, key sep, val sep, [new string]Append[val sep]] | |
178 }{ | |
179 out <- Val[new string] | |
180 } | |
181 } | |
182 | |
183 Key Value Join[dict,key sep,val sep:out] | |
184 { | |
185 [dict]First | |
186 { | |
187 out <- _Key Value Join[dict, ~, key sep, val sep, ""] | |
188 }{ | |
189 out <- "" | |
190 } | |
191 } | |
192 | |
193 _Combine[source,dest,key:out] | |
194 { | |
195 new dest <- [dest]Set[key, [source]Index[key]] | |
196 [source]Next[key] | |
197 { | |
198 out <- _Combine[source, new dest, ~] | |
199 }{ | |
200 out <- Val[new dest] | |
201 } | |
202 } | |
203 | |
204 Combine[source,dest:out] | |
205 { | |
206 [source]First | |
207 { | |
208 out <- _Combine[source, dest, ~] | |
209 }{ | |
210 out <- dest | |
211 } | |
212 } | |
213 | |
214 _Fold[list,index,current,worker:out] | |
215 { | |
216 newval <- [ | |
217 [worker]Do[ | |
218 [[[()]Append[ current ]]Append[ [list]Index[index] ]]Append[index] | |
219 ] | |
220 ]Index[0] | |
221 | |
222 [list]Next[index] | |
223 { | |
224 out <- _Fold[list, ~, newval, worker] | |
225 }{ | |
226 out <- Val[newval] | |
227 } | |
228 } | |
229 | |
230 Fold[worker,start,list:out] | |
231 { | |
232 [list]First | |
233 { | |
234 out <- _Fold[list, ~, start, worker] | |
235 }{ | |
236 out <- start | |
237 } | |
238 } | |
239 | |
1
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
240 _Zip[left,lindex,right,rindex,outlist:out] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
241 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
242 nlist <- [outlist]Append[ |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
243 [[()]Append[ [left]Index[lindex] ]]Append[ [right]Index[rindex] ] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
244 ] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
245 nlindex <- [left]Next[lindex] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
246 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
247 [right]Next[rindex] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
248 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
249 out <- _Zip[left,nlindex,right,~,nlist] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
250 }{ |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
251 out <- Val[nlist] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
252 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
253 }{ |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
254 out <- Val[nlist] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
255 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
256 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
257 |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
258 Zip[left,right:out] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
259 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
260 lindex <- [left]First |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
261 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
262 Print[~] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
263 [right]First |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
264 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
265 Print[~] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
266 out <- _Zip[left,lindex,right,~,()] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
267 }{ |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
268 out <- () |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
269 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
270 }{ |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
271 out <- () |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
272 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
273 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
274 |
0 | 275 _Dict Split[dict,entry,index,keydelim:out] |
276 { | |
277 parts <- [entry]Split[keydelim] | |
278 out <- [dict]Set[[parts]Index[0],[parts]Index[1]] | |
279 } | |
280 | |
281 Dict Split[string,keydelim,entrydelim:out] | |
282 { | |
47
6202b866d72c
Cleaned up constructor names and merged some other changes in to support the Rhope website
Mike Pavone <pavone@retrodev.com>
parents:
30
diff
changeset
|
283 out <- Fold[["_Dict Split"]Set Input[3, keydelim], Dictionary[], [string]Split[entrydelim]] |
0 | 284 } |
285 | |
286 Previous@List[list,index:prev index,not found] | |
287 { | |
288 prev <- [index] - [1] | |
289 If[[prev] < [0]] | |
290 { | |
291 not found <- list | |
292 }{ | |
293 [list]Index[prev] | |
294 { | |
295 prev index <- Val[prev] | |
296 }{ | |
297 prev index, not found <- [list]Previous[prev] | |
298 } | |
299 } | |
300 } | |
301 | |
302 Last@List[list:out,not found] | |
303 { | |
304 out, not found <- [list]Previous[[list]Length] | |
305 } | |
306 | |
307 _Reverse Fold[list,index,start,worker:out] | |
308 { | |
309 newval <- [ | |
310 [worker]Do[ | |
311 [[[()]Append[ start ]]Append[ [list]Index[index] ]]Append[index] | |
312 ] | |
313 ]Index[0] | |
314 | |
315 [list]Previous[index] | |
316 { | |
317 out <- _Reverse Fold[list, ~, newval, worker] | |
318 }{ | |
319 out <- Val[newval] | |
320 } | |
321 } | |
322 | |
323 Reverse Fold[worker,start,list:out] | |
324 { | |
325 [list]Last | |
326 { | |
327 out <- _Reverse Fold[list, ~, start, worker] | |
328 }{ | |
329 out <- list | |
330 } | |
331 } | |
332 | |
333 _Join[list,delim,current,index:out] | |
334 { | |
335 [list]Next[index] | |
336 { | |
337 out <- _Join[list, delim, [[current]Append[delim]]Append[[list]Index[~]], ~] | |
338 }{ | |
339 out <- current | |
340 } | |
341 } | |
342 | |
343 Join[list,delim:out] | |
344 { | |
345 [list]First | |
346 { | |
347 out <- _Join[list, delim, [list]Index[~], ~] | |
348 }{ | |
349 out <- "" | |
350 } | |
351 } | |
352 | |
353 Replace[string,find,replace:replaced] | |
354 { | |
355 replaced <- [[string]Split[find]]Join[replace] | |
356 } | |
357 | |
358 Concatenate[left,right:out] | |
359 { | |
360 out <- Fold[["Append"]<String@Worker, left, right] | |
361 } | |
362 | |
363 Starts With[thing,starts with:out] | |
364 { | |
365 out <- [[thing]Slice[[starts with]Length]] = [starts with] | |
366 } | |
367 | |
368 Ends With[thing,ends with:out] | |
369 { | |
370 ,compare <- [thing]Slice[ [[thing]Length] - [[ends with]Length] ] | |
371 out <- [compare] = [ends with] | |
372 } | |
373 | |
374 As List@String[string:list] | |
375 { | |
376 list <- [()]Append[string] | |
377 } | |
378 | |
379 As List@List[in:out] | |
380 { | |
381 out <- in | |
382 } | |
383 | |
384 _Filter[list,index,worker,destlist:out] | |
385 { | |
386 filter? <- [ | |
387 [worker]Do[ | |
388 [()]Append[ [list]Index[index] ] | |
389 ] | |
390 ]Index[0] | |
391 If[filter?] | |
392 { | |
393 newlist <- [destlist]Append[[list]Index[index]] | |
394 }{ | |
395 newlist <- destlist | |
396 } | |
397 | |
398 [list]Next[index] | |
399 { | |
400 out <- _Filter[list, ~, worker, newlist] | |
401 }{ | |
402 out <- Val[newlist] | |
403 } | |
404 } | |
405 | |
406 Filter[list,worker:out] | |
407 { | |
408 [list]First | |
409 { | |
410 out <- _Filter[list, ~, worker, ()] | |
411 }{ | |
412 out <- list | |
413 } | |
414 } | |
415 | |
416 Pop@List[list:out] | |
417 { | |
418 [list]Last | |
419 { | |
420 out <- [list]Remove[~] | |
421 }{ | |
422 out <- list | |
423 } | |
424 } | |
425 | |
426 Peek@List[list:out,empty] | |
427 { | |
428 [list]Last | |
429 { | |
430 out <- [list]Index[~] | |
431 }{ | |
432 empty <- list | |
433 } | |
434 } | |
435 | |
436 Contains[haystack,needle:out] | |
437 { | |
438 [haystack]Get DString[needle] | |
439 { | |
440 out <- Yes | |
441 } {} {} { | |
442 out <- No | |
443 } | |
444 } | |
445 | |
446 _Find[haystack,needle,index:outindex,notfound] | |
447 { | |
448 If[[[haystack]Index[index]] = [needle]] | |
449 { | |
450 outindex <- index | |
451 }{ | |
452 [haystack]Next[index] | |
453 { | |
454 outindex,notfound <- _Find[haystack,needle,~] | |
455 }{ | |
456 notfound <- needle | |
457 } | |
458 } | |
459 } | |
460 | |
461 Find[haystack,needle:index,not found] | |
462 { | |
463 [haystack]First | |
464 { | |
465 index,not found <- _Find[haystack, needle, ~] | |
466 }{ | |
467 not found <- needle | |
468 } | |
469 | |
470 } | |
471 | |
472 Get Pretty Print Value[value:print,index,print indent,done,out value] | |
473 { | |
474 If[[Type Of[value]] = ["List"]] | |
475 { | |
476 out value <- value | |
477 list <- value | |
478 object <- value | |
479 }{ | |
480 If[[Type Of[value]] = ["Dictionary"]] | |
481 { | |
482 out value <- value | |
483 list <- value | |
484 object <- value | |
485 }{ | |
486 If[[Type Of[value]] = ["String"]] | |
487 { | |
488 out value <- value | |
489 print <- value | |
490 done <- 1 | |
491 }{ | |
492 If[[Type Of[value]] = ["Whole Number"]] | |
493 { | |
494 out value <- value | |
495 print <- value | |
496 done <- 1 | |
497 }{ | |
498 If[[Type Of[value]] = ["Yes No"]] | |
499 { | |
500 out value <- value | |
501 print <- value | |
502 done <- 1 | |
503 }{ | |
504 If[[Type Of[value]] = ["Real Number"]] | |
505 { | |
506 out value <- value | |
507 print <- value | |
508 done <- 1 | |
509 }{ | |
510 object <- value | |
511 fieldlist <- [Blueprint Of[value]]Get Fields | |
512 [fieldlist]First | |
513 { | |
47
6202b866d72c
Cleaned up constructor names and merged some other changes in to support the Rhope website
Mike Pavone <pavone@retrodev.com>
parents:
30
diff
changeset
|
514 list <- _Object to Dict[value, fieldlist, ~, Dictionary[]] |
0 | 515 out value <- Val[list] |
516 }{ | |
517 out value <- value | |
518 done <- 1 | |
519 } | |
520 } | |
521 } | |
522 } | |
523 } | |
524 | |
525 } | |
526 } | |
527 print <- Type Of[object] | |
528 index <- [list]First {} | |
529 { | |
530 print indent <- "{Empty}" | |
531 } | |
532 | |
533 } | |
534 | |
535 Pretty Print Helper[list,tabs,index:out] | |
536 { | |
537 newtabs <- [tabs]Append[" "] | |
538 print,new index,indented,done,value <- Get Pretty Print Value[[list]Index[index]] | |
539 Print[ [[[tabs]Append[index]]Append[": "]]Append[print] ] | |
540 { | |
541 done <- Pretty Print Helper[value,newtabs ,new index] | |
542 done <- Print[[newtabs]Append[indented]] | |
543 | |
544 Val[done] | |
545 { | |
546 [list]Next[index] | |
547 { | |
548 out <- Pretty Print Helper[list, tabs, ~] | |
549 }{ | |
550 out <- 1 | |
551 } | |
552 } | |
553 } | |
554 | |
555 } | |
556 | |
557 Pretty Print[toprint,tabs:out] | |
558 { | |
559 newtabs <- [tabs]Append[" "] | |
560 ,index,indented,,value <- Get Pretty Print Value[toprint] | |
561 { | |
562 Print[[tabs]Append[~]] | |
563 { | |
564 Pretty Print Helper[value,newtabs ,index] | |
565 Print[[newtabs]Append[indented]] | |
566 } | |
567 } | |
568 out <- 1 | |
569 } | |
570 | |
571 _Object to Dict[object,field list,index,dict:out] | |
572 { | |
573 field <- [field list]Index[index] | |
574 [object]Get Field[field] | |
575 { | |
576 nextdict <- [dict]Set[field, ~] | |
577 }{ | |
578 nextdict <- dict | |
579 } | |
580 [field list]Next[index] | |
581 { | |
582 out <- _Object to Dict[object, field list, ~, nextdict] | |
583 }{ | |
584 out <- Val[nextdict] | |
585 } | |
586 } | |
587 | |
588 _Keys[list,val,key:out] | |
589 { | |
590 out <- [list]Append[key] | |
591 } | |
592 | |
593 Keys[container:out] | |
594 { | |
47
6202b866d72c
Cleaned up constructor names and merged some other changes in to support the Rhope website
Mike Pavone <pavone@retrodev.com>
parents:
30
diff
changeset
|
595 out <- Fold["_Keys", (), container] |
0 | 596 } |
597 | |
1
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
598 And[left,right:out] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
599 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
600 ,out <- If[left] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
601 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
602 out,out <- If[right] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
603 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
604 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
605 |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
606 Or[left,right:out] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
607 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
608 out <- If[left] {} |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
609 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
610 out,out <- If[right] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
611 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
612 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
613 |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
614 After[text,prefix:after,not found] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
615 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
616 If[[text]Starts With[prefix]] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
617 { |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
618 ,after <- [text]Slice[[prefix]Length] |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
619 }{ |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
620 not found <- text |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
621 } |
b3f71490858c
Small fixes and enhancements from main windows box
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
622 } |
19
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
623 |
13 | 624 Blueprint Range |
625 { | |
626 Start | |
627 End | |
628 } | |
629 | |
630 Range[start,end:out] | |
631 { | |
632 out <- [[Build["Range"]]Start <<[start]]End <<[end] | |
633 } | |
634 | |
19
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
635 First@Range[range:out,none] |
13 | 636 { |
19
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
637 If[[[range]Start >>] < [[range]End >>]] |
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
638 { |
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
639 out <- [range]Start >> |
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
640 }{ |
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
641 none <- range |
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
642 } |
13 | 643 } |
644 | |
645 Next@Range[range,val:out,done] | |
646 { | |
647 next <- [val]+[1] | |
648 If[[next] < [[range]End >>]] | |
649 { | |
650 out <- Val[next] | |
651 }{ | |
652 done <- range | |
653 } | |
654 } | |
655 | |
656 Index@Range[range,index:out,notfound] | |
657 { | |
658 If[[index] < [[range]End >>]] | |
659 { | |
660 If[[index] < [[range]Start >>]] | |
661 { | |
662 notfound <- index | |
663 }{ | |
664 out <- index | |
665 } | |
666 }{ | |
667 notfound <- index | |
668 } | |
669 } | |
670 | |
24
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
671 Tail[list,start:out] |
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
672 { |
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
673 newlist <- New Like[list] |
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
674 [list]Index[start] |
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
675 { |
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
676 out <- _Fold[list, start, newlist, "Append"] |
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
677 }{ |
69
d0ce696786cc
Clean up debug print statements a bit. Fix bug that prevented workers that took no inputs from working. Remove workaround in Array for said bug.
Mike Pavone <pavone@retrodev.com>
parents:
48
diff
changeset
|
678 out <- Val[newlist] |
24
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
679 } |
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
680 } |
19
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
681 |
30
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
682 _Collection =[col1,key1,col2,key2:out] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
683 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
684 ,out <- If[[key1]=[key2]] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
685 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
686 ,out <- If[[[col1]Index[key1]] = [[col2]Index[key2]]] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
687 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
688 nkey1 <- [col1]Next[key1] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
689 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
690 [col2]Next[key2] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
691 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
692 out <- _Collection =[col1,nkey1,col2,~] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
693 }{ |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
694 out <- No |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
695 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
696 }{ |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
697 [col2]Next[key2] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
698 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
699 out <- No |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
700 }{ |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
701 out <- Yes |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
702 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
703 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
704 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
705 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
706 } |
19
90c20dc3f4e5
Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
707 |
30
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
708 Collection =[col1,col2:out] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
709 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
710 first1 <- [col1]First |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
711 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
712 [col2]First |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
713 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
714 out <- _Collection =[col1, first1, col2, ~] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
715 }{ |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
716 out <- No |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
717 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
718 }{ |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
719 [col2]First |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
720 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
721 out <- No |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
722 }{ |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
723 out <- Yes |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
724 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
725 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
726 } |
24
8b2b3f4a2a58
Some fixes to parser_old.rhope
Mike Pavone <pavone@retrodev.com>
parents:
19
diff
changeset
|
727 |
30
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
728 =@List[list1,list2:out] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
729 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
730 ,out <- If[[[list1]Length >>] = [[list2]Length >>]] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
731 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
732 out <- Collection =[list1,list2] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
733 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
734 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
735 |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
736 =@Dictionary[list1,list2:out] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
737 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
738 ,out <- If[[[list1]Length >>] = [[list2]Length >>]] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
739 { |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
740 out <- Collection =[list1,list2] |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
741 } |
914ad38f9b59
Compiler now works for some simple programs
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
742 } |