Mercurial > repos > tabletprog
view modules/dict.tp @ 74:434988bb1fb4
Add lame linear search dictionary
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Jul 2012 21:20:30 -0700 |
parents | |
children | 2dca1a880c00 |
line wrap: on
line source
#{ //requires only that keys support equality linear <- { key:val <- :k v { #{ key <- k val <- v } } els <- #[] find <- :tofind { print: "dict find " print: "dict find " . tofind . "\n" idx <- 0 while: { if: idx < (els length) { ((els get: idx) key: ) != tofind } else: {false} } do: { idx <- idx + 1 } if: idx < (els length) {idx} else: {-1} } #{ set <- :k v { print: "linear dict set\n" idx <- find: k print: "find returned: " . idx . "\n" if: idx < 0 { els append: (key: k val: v) } else: { (els get: idx) val!: v } self } get <- :k { print: "linear dict get\n" get: k withDefault: false } get:withDefault <- :k default { print: "linear dict get:withDefault\n" idx <- find: k if: idx < 0 { default } else: { (els get: idx) val } } } } }