
Try adding strictness annotations to all the components of all your data structures (i.e. put a ! before the type). Not all of the need it, but I doubt any need to be lazy either. Probably the reason quant8 seems to be taking so much time is that it is where a lot of stuff finally gets forced. Certainly, for things that are "primitive" like Colour and Vector you want the components to be strict, in general.
I just did that. Gives a few percent speed increase. (Turns out on my machine System1 with default options actually takes 5 minutes, not 15. And with the extra strictness, it completes about 40 seconds faster. So not a vast speedup - but worth having!) Also tried playing with GHC options. I found the following: -fexcess-precision: No measurable effect. -funbox-strict-fields: Roughly 40 seconds faster again. -fno-state-hack: Makes the program somewhat *slower*. -funfolding-update-in-place: No measurable effect. Hmm, I suppose if I get *really* desperate, I could always try compiling with GHC 6.6.1 instead of 6.6... ;-)