 	})
 }
 
+/// Constructs a Generator that only returns values that satisfy a predicate.
 public func suchThat<A>(gen: Gen<A>)(p: (A -> Bool)) -> Gen<A> {
 	return suchThatOptional(gen)(p) >>- ({ mx in
 		switch mx {

	})
}

public func choose<A : SignedIntegerType>(rng: (A, A)) -> Gen<A> {
	return Gen(unGen: { s in
		return { (_) in

import Foundation
import Basis

/// Shakes up the internal Random Number generator for a given Generator with a seed.
public func variant<A, S : IntegerType>(seed: S)(m: Gen<A>) -> Gen<A> {
	return Gen(unGen: { r in
		return { n in
