[Haskell-cafe] list monad and controlling the backtracking