Using backtracking to undo transactions in Haskell | Hacker News Reader