
Hi Don,
Compare your program (made lazy) on lazy bytestrings using file IO: [...]
if I make those changes, the program runs even faster than before: module Main ( main ) where import Prelude hiding ( foldl, readFile ) import Data.ByteString.Lazy.Char8 countSpace :: Int -> Char -> Int countSpace i c | c == ' ' || c == '\n' = i + 1 | otherwise = i main :: IO () main = readFile "test.txt" >>= print . foldl countSpace 0 This gives | $ ghc --make -O2 -funbox-strict-fields test1 && time ./test1 | 37627064 | | real 0m0.375s | user 0m0.346s | sys 0m0.028s versus: | $ ghc --make -O2 -funbox-strict-fields test2 && time ./test2 | 37627064 | | real 0m0.324s | user 0m0.299s | sys 0m0.024s Whether getFile or getContents is used doesn't seem to make difference. Take care, Peter