[Haskell] A MonadPlusT with fair operations and pruning