Profiling optimised Haskell - causal analysis and implementation