annotate modules/range.tp @ 343:21e20c9bb2ba

Added range module and sample
author Michael Pavone <pavone@retrodev.com>
date Sun, 05 Apr 2015 23:35:05 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }