[Haskell-cafe] redundant loads and saves in code generated for recursive functions?