learning redo! in Haskell