fudgets-0.18.4: hsrc/internals/Table.hs
module Table(table, mapTable, listTable, tableUpdate, tableLookup, emptyTable,
Table) where
import Tree234
import HbcUtils(apSnd)
newtype Table k v = T (Tree234 (k,v)) deriving (Eq, Ord,Show)
emptyTable = T initTree234
tableLookup n j x (T t) = treeSearch n j (keyCmp (x,())) t
tableUpdate x (T t) = T (update' x t)
update' x = treeAdd const keyCmp x
mapTable f (T t) = T (fmap (apSnd f) t)
listTable (T t) = treeList t
table xs = T (treeFromList const keyCmp xs)
keyCmp (a, _) (b, _) lt eq gt =
if a == b then eq else if a < b then lt else gt