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