On Aug 18, 2009, at 9:19 PM, Job Vranish wrote:

data IndexedCollection a = IndexedCollection {
    nextKey            :: Int,
    availableKeys :: [Int],
    items                :: (IntMap Int a)
} deriving (Show)

emptyIndexedCollection :: IndexedCollection a
emptyIndexedCollection = IndexedCollection 0 [] empty
[...]
Does anyone know of a better/already existent data structure for handling this problem? Or perhaps a better way of keeping a "key pool" than my availableKeys solution?

just a slight simplification: you could drop the nextKey field and initialise availableKeys with [0..] in emptyIndexCollection. The add function would consume the head of this list, the remove function add the deleted key as new head.

--
Underestimating the novelty of the future is a time-honored tradition.
(D.G.)



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to