I approve of James Hague's proposal to allow numbers with
k as a suffix, so
64k is 65536. However, there is that binary vs. decimal issue.
The IEC/ISO binary prefixes (ki, Mi, Gi, etc.) have not been widely adopted, and for good reason: unlike the regular SI prefixes, they don't represent anything in spoken language. They come with proposed pronunciations, but these are too awkward (especially when followed by ‘byte’) to be accepted — ‘kibibyte’ sounds like a mockery of the SI prefixes, not an addition to them. As long as there are no binary prefixes in speech, there will be little demand for abbreviations that aren't short for anything.
There is (was?) another proposed set of binary prefixes which suffer this problem slightly less: bk, bM, bG, etc. They resemble the spoken ‘binary kilo-’, ‘binary mega-’, etc., so they might have some chance of adoption. Maybe programming languages should use them, so
1bk = 1024 and
1k = 1000. Or maybe they should unapologetically use
1k = 1024 — who needs powers of 10 anyway?
Some other, less controversial extensions to number syntax:
- Allow flonums to omit zeroes before or after the decimal point:
.1should be acceptable as floats. (In Common Lisp,
1.is an integer, for historical reasons.)
- Separators, as in Ada and Ruby and rather a lot of languages nowadays: 109 can be written as
1_000_000_000. (Or maybe as
1,000,000,000, but I'd rather avoid comma, to avoid confusion over whether a string like
1.2345.) This is especially useful in REPL output, so you don't have to read unpunctuated ten-digit numbers. (Usability hint: don't print separators for four- or five-digit numbers; they're not needed there.)
- Exponents in integers:
1e9should read as the integer
1000000000, not as a float. (This is a good substitute for decimal SI suffixes.) Negative suffixes could read as ratios if available, or else as flonums.
- Fractional SI suffixes: if
1kis 1024 or 1000, might
1mbe 1/1000 (or 1/1024)?
- Radix with ‘r’:
#2r1101011, saving a dispatching character. (There is virtually no demand for radices over 16, so don't bother supporting them. If you want base 36, you'd probably like base 64 even better.)
- Scheme-style complex numbers (
3.033-198.26i) may be easier to read than CL-style ones, although this seldom matters.
I suppose none of this is very important.