Mercurial > repos > tabletprog
comparison modules/dict.tp @ 202:cea671c4056c
Add map method to linear dict
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 28 Aug 2013 01:05:29 -0700 |
parents | a868a2aec930 |
children | 96fdc5b37ceb |
comparison
equal
deleted
inserted
replaced
201:d2e0664ba73e | 202:cea671c4056c |
---|---|
1 #{ | 1 { |
2 //requires only that keys support equality | 2 linearWithEls <- :els { |
3 linear <- { | |
4 key:val <- :k v { | 3 key:val <- :k v { |
5 #{ | 4 #{ |
6 key <- k | 5 key <- k |
7 val <- v | 6 val <- v |
8 } | 7 } |
9 } | 8 } |
10 els <- #[] | |
11 find <- :tofind { | 9 find <- :tofind { |
12 idx <- 0 | 10 idx <- 0 |
13 while: { | 11 while: { |
14 if: idx < (els length) { | 12 if: idx < (els length) { |
15 ((els get: idx) key: ) != tofind | 13 ((els get: idx) key: ) != tofind |
62 foreach: els :idx el { | 60 foreach: els :idx el { |
63 l: (el key) (el val) | 61 l: (el key) (el val) |
64 } | 62 } |
65 } | 63 } |
66 | 64 |
65 map <- :fun { | |
66 newels <- #[] | |
67 foreach: els :idx el { | |
68 newels append: (key: (el key) val: (fun: (el val))) | |
69 } | |
70 linearWithEls: newels | |
71 } | |
72 | |
67 length <- { els length } | 73 length <- { els length } |
68 } | 74 } |
69 } | 75 } |
70 | 76 #{ |
77 //requires only that keys support equality | |
78 linear <- { | |
79 linearWithEls: #[] | |
80 } | |
81 } | |
71 } | 82 } |