let variable_list kind xs = List.fold_right (fun x (vs, xts) -> let v = variable kind () in v :: vs, (x, TVariable v) :: xts ) xs ([], [])