
25 Oct
2007
25 Oct
'07
3:30 p.m.
Hi folks, I'm writing a Gnu DBM module as an exercise for learning Haskell and its FFI. I'm wondering how I might write a function that returns the database keys as a lazy list. I've wrapped the two relevant foreign functions: firstKey :: Ptr Db -> IO (Maybe String) nextKey :: Ptr Db -> String -> IO (Maybe String) NextKey takes a key, and returns the next one. Either function could return Nothing, since the db may have 0 or 1 keys. Given these, is it possible to write a (simple) function allKeys :: Ptr Db -> IO [String] that lazily fetches the keys? (Or, an idiomatic way of achieving the same end?) Thanks, Graham