[Haskell-cafe] How to properly optimize MArray functions for speed?