
Hello Joel, Monday, April 24, 2006, 5:50:57 AM, you wrote:
For example, you could use tries to store all strings but you could easily get to the point where you can't load them all into, say, 1Gb of memory which is all I have on my machine. I'm thinking that the required data could be pulled from disk lazily (as needed) and laziness is a Haskell forte.
this should be rather easy to implement: type Key = String type Value = String -- | Opens a file with given name and returns function that maps keys to values open :: String -> IO (Key -> Value) open filename = do h <- openBinaryFile filename ReadMode let lookup key = unsafePerformIO $ do -- your genuine algorithm in IO monad that -- finds value for `key` and returns it return value return lookup main = do lookup <- open "database" print (lookup "key1", lookup "key2") -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com