[Haskell-cafe] Re: Optimization with Strings ?

Heinrich Apfelmus apfelmus at quantentunnel.de
Fri Dec 4 06:01:42 EST 2009


Emmanuel CHANTREAU wrote:
> In my futur program, it use a lot of binary trees with strings (words)
> as leaf. There is just arround 1000 words and they will appear a lot of
> times. The program will possibly consume a lot of process and memory
> (it is a mathematics proover).

If your strings are indeed leaves, then chances are that you share them
a lot and there's nothing much to worry about. For instance, the
following complete binary tree

   data Tree a = Leaf a | Branch (Tree a) (Tree a)

   example a = tree 100
      where
      tree 0 = Leaf a
      tree n = let t = tree (n-1) in Branch t t

uses only linear space and the argument  a  is stored exactly once.


I'm not sure whether this answers your question, though, also because it
depends on what exactly you want. I suggest writing a tiny prototype of
your idea and asking on the mailing list again when there are any
performance problems.

Also, knowing Haskell's evaluation model helps a lot

  http://en.wikibooks.org/wiki/Haskell/Graph_reduction


Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com



More information about the Haskell-Cafe mailing list