comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@world.std.com>
Subject: Re: Static typing (Was Re: Better support for garbage collection)
Date: Mon, 2 Apr 2001 13:15:23 GMT
Date: 2001-04-02T13:15:23+00:00	[thread overview]
Message-ID: <wcc1yrbe93o.fsf@world.std.com> (raw)
In-Reply-To: 3ac85c82.13458000@news.cis.dfn.de

dmitry@elros.cbb-automation.de (Dmitry Kazakov) writes:

> Yes and no. In my opinion instances of universal types may not exist
> at run time.

In Ada, there are actually some rare circumstances where
universal_integers can exist at run time.  For example:

if T1'Size > T2'Size then ...

where T1 and T2 are not static subtypes.  I suspect that the intent of
the original designers of Ada 83 was as you say (u_i is a compile time
concept), but there are a few minor holes in that idea.

Note that the above can raise Constraint_Error if one of the 'Sizes is
very large.

>... A universal_integer has an arbitrary length, its actual
> representation is upon the compiler. So one may not have an object of
> this type. In the end an instance of a universal type should be always
> converted to some "legal" type. Yet with user-defined conversions one
> will have an ability to explicitly add literals to a private type:
> 
> function <syntax-sugar> (Value : Integer) return Data_16_Type;
> 
> Then the following conversion path is applied:
> 
> 123 (of universal_integer)->123 (of Integer)-> 123 (of Data_16_Type)

You presumably need to require that this function be "pure", so the
compiler can evaluate calls at compile time.  (Note that Ada's pragma
Pure applies to whole packages, not to particular functions.)

Also, I suspect it's a bad idea to allow this function to have
machine-code inserts, or calls to foreign languages.  Especially if it's
a cross compiler!

Speaking of cross compilers, I suppose if the function does floating
point arithmetic, the compiler is required to simulate the target
hardware?  That's a fairly substantial burden...

> Further this issue is obviuosly relevant to another thread (where the
> compile time routines are discussed). If such beasts were allowed then
> one might have exactly what you mentioned:
> 
> function <syntax-sugar> (Value : Universal_Integer)
>    return Data_16_Type;
> ??pragma <ensure-that-this-is-a-compile-time-function>;??

I'm slightly confused at this point.  What rules do you propose that
ensure that the function is only called at compile time?  Are these
implicit conversions only allowed for literals?  Only for static
expressions?

> As for danger, it is immense, yet in modern times (take a look at
> comp.object) strong-static-manifested typing is considered as an
> evil?! (:-()

I've read part of that thread (until I got bored of "yes it is", "no
it's not" repeating indefinitely).  Actually, only *some* folks think
that strong-static-manifest typing is evil.  I think it's a sign of the
immaturity of "computer science" that practitioners can't agree on such
a fundamental issue.

Anyway, I don't understand why you like universal types with implicit
conversions better than the alternative I suggested.  (The alternative
is that the type of a literal is determined by context, and the value of
the literal is determined by evaluating a type-specific function at
compile time.)  What is the advantage of universal types?  They seem
kind of kludgy to me.

The original Green language said that integer literals are overloaded on
all integer types.  Universal integer was invented so that things like:

    if X = 1 then ...

where X is a named number, would not be ambiguous.  But I think named
numbers are a kludge anyway, so I don't buy the universal_integer
fiction.

By the way, you didn't mention a universal_access, which would
presumably be the type of "null".

- Bob



  reply	other threads:[~2001-04-02 13:15 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-13 18:37 Better support for garbage collection Nick Roberts
2001-03-14  8:16 ` Florian Weimer
2001-03-14 18:52   ` Robert A Duff
2001-03-14 19:40     ` Florian Weimer
2001-03-15 13:18       ` Nick Roberts
2001-03-14 19:29 ` Robert A Duff
2001-03-14 20:59   ` Brian Rogoff
2001-03-16 16:42     ` Robert A Duff
2001-03-17  6:13       ` Lao Xiao Hai
2001-03-24  4:08       ` Brian Rogoff
2001-03-15  4:35   ` Nick Roberts
2001-03-15 21:37     ` Randy Brukardt
2001-03-15 22:36     ` Stephen Leake
2001-03-16 16:26     ` Robert A Duff
2001-03-16 16:59       ` Brian Rogoff
2001-03-16 17:31         ` Robert A Duff
2001-03-16 18:29           ` Brian Rogoff
2001-03-17  2:30           ` Nick Roberts
2001-03-17 21:59             ` Robert A Duff
2001-03-17 22:57             ` Static typing (Was Re: Better support for garbage collection) Brian Rogoff
2001-03-17 23:45               ` Robert A Duff
2001-03-18  0:58                 ` Brian Rogoff
2001-03-19 15:24                   ` Robert A Duff
2001-03-20  4:21                     ` Brian Rogoff
2001-03-21  1:32                       ` Ken Garlington
2001-03-21 13:28                         ` Robert A Duff
2001-03-22  2:08                           ` Ken Garlington
2001-03-22 16:40                             ` Robert A Duff
2001-03-25 16:21                               ` Ken Garlington
2001-03-25 16:56                                 ` Ken Garlington
2001-03-25 22:31                                 ` Robert A Duff
2001-03-27  0:24                                   ` Ken Garlington
2001-03-28 23:15                                     ` Robert A Duff
2001-03-29  5:02                                       ` Ken Garlington
2001-03-29  6:13                                         ` David Starner
2001-03-29 10:10                                           ` AG
2001-03-29 14:28                                           ` Ken Garlington
2001-03-29 23:46                                         ` Robert A Duff
2001-03-30  3:41                                           ` Ken Garlington
2001-03-30 21:21                                             ` Robert A Duff
2001-03-31 19:30                                               ` Ken Garlington
2001-04-02 15:27                                                 ` Robert A Duff
2001-04-02 23:29                                                   ` Ken Garlington
2001-03-30 21:29                                             ` Robert A Duff
2001-03-30  9:16                                           ` Dmitry Kazakov
2001-03-30  9:51                                             ` Florian Weimer
2001-04-02  8:54                                               ` Dmitry Kazakov
2001-03-30 16:13                                             ` Ken Garlington
2001-04-02 11:00                                               ` Dmitry Kazakov
2001-03-30 20:44                                             ` Robert C. Leif, Ph.D.
2001-04-02 11:29                                               ` Dmitry Kazakov
2001-04-02 13:15                                                 ` Robert A Duff [this message]
2001-04-03  8:57                                                   ` Dmitry Kazakov
2001-03-27  2:39                             ` Andrew Berg
2001-03-27  3:33                               ` Ken Garlington
2001-03-27 14:23                                 ` Robert A Duff
2001-03-27 23:36                                   ` Ken Garlington
2001-03-29 23:50                       ` Robert A Duff
2001-03-19 18:24       ` Better support for garbage collection Tucker Taft
     [not found]   ` <87bsr46kxv.fsf@deneb.enyo.de>
2001-03-15 14:18     ` Robert A Duff
2001-03-15 16:36       ` Florian Weimer
2001-03-14 22:05 ` Laurent Guerby
2001-03-16 16:47   ` Robert A Duff
2001-03-16 19:46     ` Laurent Guerby
2001-03-16 20:10       ` Robert A Duff
2001-03-17 13:14         ` Support for per allocation pool selection (was: Better support for garbage collection) Laurent Guerby
2001-03-17 17:06           ` Robert A Duff
2001-03-17 19:19           ` Florian Weimer
2001-03-17 21:10             ` Robert A Duff
2001-03-15 17:56 ` Better support for garbage collection Ray Blaak
2001-03-21 16:15 ` Implementing C/C++ style #include bhazzard
2001-03-21 16:45   ` Marin David Condic
2001-03-22 15:13     ` Ira D. Baxter
2001-03-22 15:23       ` Marin David Condic
2001-03-25 15:45         ` Anton Gibbs
2001-03-26 14:24           ` Ted Dennison
2001-03-26 15:00             ` Marin David Condic
2001-03-26 14:49           ` Marin David Condic
2001-03-26 18:19             ` Stephen Leake
2001-03-26 18:44               ` Pascal Obry
2001-03-26 21:44                 ` Robert A Duff
2001-03-27  3:02                   ` Andrew Berg
2001-03-27  3:27                     ` Phaedrus
2001-03-27 17:41                   ` Pascal Obry
2001-03-26 19:18               ` Ted Dennison
2001-03-27 18:51                 ` Anton Gibbs
2001-03-26 19:35               ` Marin David Condic
2001-03-26 23:04                 ` Mark Lundquist
2001-03-27 14:38                   ` Marin David Condic
2001-03-26 16:12           ` Florian Weimer
2001-03-26 17:34             ` David Starner
2001-03-26 22:25               ` Florian Weimer
2001-03-27  3:29                 ` David Starner
2001-03-26 18:23             ` Stephen Leake
2001-03-26 22:34               ` Florian Weimer
2001-03-27  7:34         ` Ole-Hjalmar Kristensen
2001-03-27 12:43           ` Dale Stanbrough
2001-03-27 14:40             ` Marin David Condic
2001-03-27 15:01             ` Ted Dennison
2001-03-27 13:20           ` Preben Randhol
2001-03-23 17:39       ` Wes Groleau
2001-03-21 18:07   ` Mark Lundquist
2001-03-22 12:50   ` Chris M. Moore
2001-03-22 14:30     ` Marin David Condic
2001-03-22 21:15       ` singlespeeder
2001-03-22 21:42         ` Marin David Condic
2001-03-23 14:43           ` Georg Bauhaus
2001-03-23 18:51             ` Marin David Condic
2001-03-22 15:02     ` Pat Rogers
2001-03-22 15:28       ` Marin David Condic
2001-03-22 16:32       ` Chris M. Moore
2001-03-22 16:57       ` Robert A Duff
2001-03-26 16:13   ` Martin Dowie
2001-03-26 22:55   ` Phaedrus
2001-03-27  1:36     ` tmoran
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox