evaluated anywhere. I've used retainer profiling, and the functions that are leaking space according to the profiler output are strict throughout.
Have you looked at the Core code generated? That might show something that isn't strict which you think is. I believe "let" statements in Core represent allocations, while "case" statements are strict.
In case you don't know, the best thing you can do to read core is to add comment annotations ({-# CORE "..." #-} I think), which will help you pinpoint which Haskell gets turned into core. To produce core with 6.8, use the -fext-core flag.
Justin