Mercurial > repos > icfp2014
annotate code/ll.lm @ 40:d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 26 Jul 2014 15:29:01 -0700 |
parents | |
children |
rev | line source |
---|---|
40
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #{ |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 length <- :lst { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 len <- [] |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 while: { not: (lst isInteger?)} do: { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 lst <- lst tail |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 len <- len + 1 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 len |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 reverse <- :lst { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 new <- [] |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 while: { not: (lst isInteger?)} do: { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 new <- (lst value) | new |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 lst <- lst tail |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 new |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 split:at <- :lst :pos { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 first <- [] |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 i <- 0 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 while: { i < pos } do: { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 first <- (lst value) | first |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 lst <- lst tail |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 i <- i + 1 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 #[(reverse: first) lst] |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 map <- :lst fun { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 new <- [] |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 while: { not: (lst isInteger?) } do: { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 new <- (fun: (lst value)) | new |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 lst <- lst tail |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 reverse: new |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 fold:with <- :lst acc :fun { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 while: { not: (lst isInteger?) } do: { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 acc <- fun: acc (lst value) |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 lst <- lst tail |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 acc |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 filter <- :lst pred { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 new <- [] |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 while: { not: (lst isInteger?) } do: { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 if: (pred: (lst value)) { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 new <- (lst value) | new |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 } else: {} |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 lst <- lst tail |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 reverse: new |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 flatten <- :lst { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 fold: lst [] with: :acc el { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 fold: el acc with: :iacc iel { |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 iel | iacc |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 } |
d5ccb66ae98b
Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 } |