Hi there, While trying to read a list of records from a binary database I think I've encountered a space leak but I'm not proficient enough to detect the cause of the error. The culprit is the readSessionDB function in SessionDB module which I attach with other relevant code. What I do in Session.readSession is using FFI to read a fixed size record from an input stream. That far, okay. (I have no idea if I'm doing it right, though) The problem is, combined with my approach in Session.readSessionDB, it results in huge amounts of space allocation, about 1MB, whereas the raw data would consume about 50K. It would be a [Session] with about 3000 elements, each of which contains 3 Ints and 6 Floats. I wonder if the following code in SessionDB is the proper way to read a list of records from a file. I get the feeling that the (s:rest) in the last return statement causes my problems. readSessionList :: Handle -> IO [Session] readSessionList h = do session <- readSession h case session of Nothing -> return [] Just s -> do rest <- readSessionList h return (s:rest) Comments appreciated, -- Eray Ozkural (exa) <erayo@cs.bilkent.edu.tr> Comp. Sci. Dept., Bilkent University, Ankara www: http://www.cs.bilkent.edu.tr/~erayo Malfunction: http://mp3.com/ariza GPG public key fingerprint: 360C 852F 88B0 A745 F31B EA0F 7C07 AE16 874D 539C