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

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

Reply via email to