[M3devel] Integers

Mika Nystrom mika at async.async.caltech.edu
Fri Jan 8 22:50:28 CET 2010


Hendrik, do you mean:

"INTEGER is that subrange of LONGINT that happens to be efficiently 
implementable on the target architecture"?

Why choose a specific size (e.g., 64 bits) for LONGINT, then?  Can I
choose it as I please when I configure/compile the compiler?

    Mika

hendrik at topoi.pooq.com writes:
>On Fri, Jan 08, 2010 at 02:36:18PM -0500, Tony Hosking wrote:
>> 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.
>
>The question is not whether it is a subrange type.  It isn't.
>The question is whether it could be.
>
>> Neither is LONGINT.
>> 
>
>-- hendrik



More information about the M3devel mailing list