In terms of `fixing' the basis spec, I always feel the the most broken part is that Int.toString uses ~ instead of -. The string form of negative integers starts with the character `-', not with `~'. The same is also true for Int.fromString: it should NOT accept ~3.