Mercurial > repos > tabletprog
annotate modules/range.tp @ 365:3d36d69aab7f
Fix JSON decoder to align with language changes
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 07 Aug 2015 21:40:08 -0700 |
parents | 21e20c9bb2ba |
children |
rev | line source |
---|---|
343
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #{ |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 from:to:by <- :_from :_to :_by { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 #{ |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 from <- { _from } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 to <- { _to } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 by <- { _by } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 legnth <- { (_to - _from) / _by } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 get <- :idx { _to + idx * _by} |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 array <- { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 fold: #[] with: :acc el { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 acc append: el |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 list <- { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 map: :el { el } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 map <- :fun { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 foldr: [] with: :acc el { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 (fun: el) | acc |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 foldr:with <- :acc :fun { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 cur <- _from + ((_to - _from) / _by) * _by |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 while: { cur >= _from } do: { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 acc <- fun: acc cur |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 cur <- cur - _by |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 acc |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 fold:with <- :acc :fun { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 cur <- _from |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 while: { cur < _to } do: { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 acc <- fun: acc cur |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 cur <- cur + _by |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 acc |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 foreach <- :fun { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 idx <- 0 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 cur <- _from |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 res <- cur |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 while: { cur < _to} do: { |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 res <- fun: idx cur |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 idx <- idx + 1 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 cur <- cur + _by |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 res |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 from:to <- :f :t { from: f to: t by: 1 } |
21e20c9bb2ba
Added range module and sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 } |