[Haskell-cafe] reversing big list with constant heap space used