This shouldn't typecheck ``` type Random A = integer -> integer * A;; let runRandom (x : Random A) : A = (x i0)[1];; ``` because the `A` in `runRandom` is unbound. ``` let runRandom A (x : Random A) : A = (x i0)[1];; ```