[Haskell-cafe] generating random lists until some predicate holds