pub fn generalize(env: &TypeEnv, preds: Vec<Predicate>, typ: Type) -> Scheme
Turn a monotype typ (plus constraints preds) into a polymorphic Scheme by quantifying over the type variables not free in env.
typ
preds
Scheme
env