[Haskell-cafe] A better, fair, and terminating backtracking monad [Was: Concurrency question]