[M3devel] Integers

Tony Hosking hosking at cs.purdue.edu
Fri Jan 8 20:36:18 CET 2010


On 8 Jan 2010, at 14:04, hendrik at topoi.pooq.com wrote:

> On Fri, Jan 08, 2010 at 11:10:28AM -0600, Rodney M. Bates wrote:
>> 
>> What's unique about Modula-3 is that such representation changes are
>> left to the compiler, while the language merely views values as
>> sometimes belonging to more than one type, and allows such values to be
>> assigned when so.  The usual approach in other languages is to elevate
>> the representation change from a machine-level matter to a language-
>> level matter by treating it as an implicit type change in addition to
>> a representation change.  The result is always a lot of unnecessary
>> complexity in the language.
> ...
> ...
>>> 
>>> Where in the language is it important that INTEGER and LONGINT be 
>>> different base types?  In other words, what advantages does this 
>>> separation convey?
>> 
>> One thing that is very much needed in a language (not the only thing)
>> is a type that always matches the implementation's native arithmetic
>> size, which is most efficient.  If you don't distinguish this type,
>> it becomes either impossible or horribly convoluted to define arithmetic
>> so native machine arithmetic can be usually used where possible,
>> but multi-word arithmetic will be used where needed.
> 
> Yes.  You do need this type.  And you can even call it INTEGER.  But is 
> there any reason it cannot be a predefined subrange type of LONGINT?

I sense confusion here...

INTEGER is not a subrange type.
Neither is LONGINT.




More information about the M3devel mailing list