
Lisa Parratt wrote:
Treating an int as 32 bits indexed from 031 is just an optimised representation of a table. Let's not elevate that optimisation to the status of discrete mathematics. Personally I find that about half the time when I want to use bitfields I end up overflowing the 32bit ceiling anyway (in C this is), so you have to use nonbasic types anyway.Erik Hougaard wrote:Numbers are floats/doubles ;)Only in the out of the box configuration  it's an exceedingly minor change to move over to integers. Personally, I'd like to see more primitive arithmetic support. I intensely dislike the fact you're basically forced to resort to C in order to perform discrete mathematics, one of the cornerstones of computation.
Now I'd certainly support more userextensible operators, I hinted as much in my "move towards Common Lisp" suggestion. ML and Icon both provide interesting references here. The big problem I see for Lua with any sort of extensible syntax is that currently compilation of Lua (into bytecodes, or runtime functions) does not depend on the Lua environment. Which makes offline compilation easy.
Returning to the particular suggestion, it is of course possible to define the meaning of the bitwise operators without reference to an underlying representation: For example ~x === x1. Essentially any bitwise operation gets converted to a series of arithmetical operations, which are equivalent when viewed as operating on a infinite bitstring (a signed integer can be represented as an infinite bitstring with either a finite number of 1s (positive) or a finite number of 0s (negative)). Whether the underlying arithmetic then takes places using 64bit ints, 32bit floats, or bitstrings becomes a quality of implementation issue. That might be a good idea.
drj