
I've just switched my code to use PackedStrings rather than Strings for file contents, and ran into what appears to be a bug in the Data.PackedString module in ghc 5.04.3. unlines is the inverse of lines, since lines converts empty lines into empty strings. linesPS, however, ignores empty lines. :( It seems like it would be a good idea to either fix this (which might not be a good idea, if existing code depends on its current behavior), or add a note in the documentation that it isn't analagous to lines, so that other people won't make the same mistake based on its similar name. My example program that demonstrates this: import Data.PackedString main = do temp <- return $ packString "hello\nworld\n\nI\njust\nskipped\n\n a line\n" putStr $ "The unlines of linesPSed version:\n\n" putStr $ unlines $ map unpackPS $ linesPS temp putStr $ "The unlines of linesed version:\n\n" putStr $ unlines $ lines $ unpackPS temp -- David Roundy http://www.abridgegame.org