[Haskell-cafe] Trying to reduce memory costs of String duplicates

Eugene Kirpichov ekirpichov at gmail.com
Sat Sep 5 09:36:58 EDT 2009

Should be easy to implement one. Something like this:

class (Monad m) => MonadIntern e m | e -> m where
  intern :: e -> m e

instance (Ord e) => MonadIntern e (State (M.Map e e)) where
  intern = modify . insertWith (\old new -> old))

2009/9/5 Günther Schmidt <gue.schmidt at web.de>:
> Hi all,
> I'm reading in a data of 216k records into a map of Key, Values Pairs, the
> values being strings.
> As it happens out of 216k String values there really are only about 6.6k
> distinct string values, so I could save a lot of RAM if I was able to
> "insert" only actually *new* string values into the map and use references
> to (string) values that already are in memory instead.
> Is there a container that would, if I wanted to insert an element, return a
> pair of either the previously inserted, equal value and the container
> unchanged, or the new, previously unknown value and the new container
> amended by that element?
> Günther
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

Eugene Kirpichov
Web IR developer, market.yandex.ru

More information about the Haskell-Cafe mailing list