[M3devel] Integers

hendrik at topoi.pooq.com hendrik at topoi.pooq.com
Fri Jan 8 22:39:23 CET 2010


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