This post has a good overview of what can be gained by the use of these techniques:
http://www.randomhacks.net/2007/02/10/map-fusion-and-haskell...
> Using just these two rules, I saw a 225% increase in the number of nodes processed per second. Under the right circumstances, GHC can even outperform C code by applying these kinds of inter-procedural optimizations.
Also, we have QuickCheck, which allows us to check properties by randomly generating testcases. The post I linked mentions this.