>> Am I correct in assuming that if my program doesn't contain seq then I
> can reason using eta reduction?
You may be well aware of this, but the wiki page on the correctness
of short cut fusion (http://haskell.org/haskellwiki/
Correctness_of_short_cut_fusion) really helped me to get at least a
basic intuition for how to reason around the oddities introduced by
seq. Some of the papers linked were very handy as well, although I'll
confess to only partially understanding them.
--s