From: Robert A Duff <bobduff@world.std.com>
Subject: Re: Static typing (Was Re: Better support for garbage collection)
Date: Fri, 30 Mar 2001 21:21:59 GMT
Date: 2001-03-30T21:21:59+00:00 [thread overview]
Message-ID: <wccvgorkl54.fsf@world.std.com> (raw)
In-Reply-To: WfTw6.458$jU5.99062910@newssvr16.news.prodigy.com
"Ken Garlington" <Ken.Garlington@computer.org> writes:
> : > X : constant String := 1_000;
> : >
> : > Is the underscore retained?
> :
> : Probably the right rule is that string literals must have quotes, so the
> : above is illegal.
>
> Back to form of the literal contributing to its interpretation (*sigh*)
>
> : Do you understand the rather subtle distinction
> : between letting the literal's form determine its type, versus making
> : certain forms illegal after having determined the type (clearly String,
> : in the above case)?
>
> If it's clearly String, why would 1_000 be an illegal string? If you can
> explain that, then I might understand the distinction...
This is key. The reason why you don't understand my ideas (and think
I'm being self-contradictory) is that you don't understand this
distinction. I'll try to clarify:
In the above example (in my proposal), the literal 1_000 is
*interpreted* as being of type String (because that's what the context
(quite obviously) requires). This does *not* imply that it's legal --
there are additional rules that require literals of a type to be of a
certain form. Those rules should be chosen to avoid confusion. We both
agreed that it's confusing to leave off the quotes in this case, so I'm
imagining a rule making the above illegal.
In other words, there are two steps:
1. Determine that 1_000 must be of type String (without noticing
what the literal looks like).
2. Check that 1_000 is a valid form for a literal of type String.
Of course the rules for what is valid form for a String are going to be
different then for Integer or Float.
I suppose there's actually:
3. Given a valid literal, determine its value.
This is also type dependent.
> I understand that you see it as a "malformed literal"... but WHY is it a
> malformed literal, any more than
>
> X : constant Float := 1;
>
> would NOT be a malformed literal under your proposal? Isn't the desired
> result "obvious" in each case?
I find it obvious in this case, but not in the String case. Shrug.
That's only a minor point.
> OK, but then note that the following will (almost) always be illegal:
>
> X : constant Float := 1/2;
> X: constant Integer := 1/2;
> X: constant Float := 1.0/2.0;
> X: constant Integer := 1.0/2.0;
>
> because it's ambiguous which "/" operator is intended here (assuming one is
> visible for both types). Currently, only two are illegal. Do we really want
> to break existing programs in this manner?
No. Again, you misunderstand how overload resolution works. There is
only one "/" that returns Float, and that's the one chosen in the first
example. Therefore, the two literals would also be interpreted as
Float. Likewise, in the other three examples -- they would resolve just
fine.
> X: = constant Float := To_Float("one half");
>
> All you'd have to do is agree on common descriptions and have at it!
I presume you're being sarcastic. Writing down the rules for English
language descriptions of numbers (in words) would be a big job, and a
big waste of time.
- Bob
next prev parent reply other threads:[~2001-03-30 21:21 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 [this message]
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
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