[Haskell-cafe] Re: Collections

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Fri Jun 22 00:28:03 EDT 2007


On Fri, 2007-06-22 at 09:38 +1000, Thomas Conway wrote:

> The actual case that I'm dealing with, where I believe Data.Map (or
> similar, incl finger trees) has a benefit is one in which it's not
> simply a case of lists of items, yielding a list of items. I'm
> manipulating an on-disk inverted index, so rather than a simple list
> of items, the code is actually monadic, doing IO to retrieve the items
> off disk, and the cost of creating the intermediate lists is
> unwearable. The key problem is that you loose the laziness because of
> the IO monad, so if you're not careful, you end up trying to store the
> complete intermediate lists.

You might find that lazy IO is helpful in this case. The primitive that
implements lazy IO is unsafeInterleaveIO :: IO a -> IO a

Note that using a Map will probably not help since it needs to read all
the keys to be able to construct it so that'd pull in all the data from
disk.

Duncan



More information about the Haskell-Cafe mailing list