packages feed

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