[Haskell-cafe] haskell idiom for reversible computations