Int が現実的に 32bit や 64bit なのには不満はないです。無限精度にはなってほしくない。ValueEnumerable の例で言えば func combination<T: ValueEnumerable, U: ValueEnumerable>(_ a: T.Type, _ b: U.Type) -> [(T, U)] みたいな関数があったときにUInt8 や Int32 や Int64 は ValueEnumerable だけど Int は違ったらcombination(Int, Bool) みたいなのを防げます。combination(UInt8, Bool) はやりたいですし、 combination(Int32, Bool) も同様に認められるべきだと思います。