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: Wed, 28 Mar 2001 23:15:15 GMT
Date: 2001-03-28T23:15:15+00:00	[thread overview]
Message-ID: <wccvgotscxo.fsf@world.std.com> (raw)
In-Reply-To: t5Rv6.212$wd2.29337625@newssvr16.news.prodigy.com

"Ken Garlington" <Ken.Garlington@computer.org> writes:

> 
> "Robert A Duff" <bobduff@world.std.com> wrote in message
> news:wccr8zl4h0n.fsf@world.std.com...
> Note, however, that if these literals were "interpreted" as their "obvious"
> floating-point context, and the function I posted earlier were introduced,
> you'd have to decide if now (a) the literals were "more obviously" an
> integer or (b) that the correct form could not be determined from context.
> Either way would seem very awkward to me. Granted, you have that problem now
> distinguishing different decimal representations, but I certainly wouldn't
> want to make it any worse!

Sorry, I've lost track of which function you mean.  But certainly (a) is
Bad (if I understand what you mean) -- it introduces Beaujolais effects.

As to (b), once we have determined the type of a literal (ignoring its
form), we can then apply some rules to insist that its form is Good.
What I don't like is that the form helps determine the type.

> : >... If we are to have implicit casts of integers to
> : > floating point values, why not then permit the more general:
> : >
> : > Y : Float := ferble;
> : >
> : > where "ferble" is a function that returns an integer (or, for that
> matter,
> : > any fixed-point) type?
> :
> : Why not?  Because it makes no sense.  Converting type Standard.Integer
> : to Standard.Float probably makes no sense.
> 
> A conversion (or "interpretation", if you prefer) of a representation that
> is numeric, but has an implied decimal point to the right of the last digit,
> to a representation that has an explicit decimal point to the right of the
> last digit, makes no sense? Then why do you want an Ada compiler to do it
> for literals?

I see the two as completely different.  We shouldn't really be talking
about Integer and Float here.  We should be talking about, say:

    type Apple_Count is range 0..1_000;
    type Length_In_Meters is digits 7;

We don't want to implicitly convert a number-of-apples to a length,
because it doesn't make sense -- they're measuring different things.
This has nothing to do with the fact that one is float and the other
integer.  We wouldn't want to implicitly convert Apple_Count to
Orange_Count (two different integer types), either.

Literals, on the other hand, have no particular type.  The literal "1"
could be of any integer type (in Ada), and which type is determined by
context.  I say it should be "any type", and still determined by context
according to the usual overload resolution rules.

> : But implicitly converting
> : "1" to (say) Float *does* make sense.  I was only talking about
> : literals.
> 
> Again, this makes about as much sense as insisting that 1 be implicitly
> coverted to character, string... or, for that matter, "one half" to be
> converted to some numeric type. After all, if you're going to object to the
> "overhead" of adding .0, then why not object to adding quote marks for a
> character or a single-word string (in the absence of some object with that
> name)... isn't each "obvious in context"?

Of course it would be silly of me to make a big stink about having to
read an extra ".0" in the code.  I think it's silly, but it's obviously
not a big deal.

What I really object to is the general idea that the *form* of a literal
helps determine its type (during overload resolution).  For example,
suppose we have two procedures:

    procedure Mumble(X: Integer);
    procedure Mumble(X: Float);

Then in Ada, a call "Mumble(1);" will resolve to the first Mumble.  But
that's error prone.  A reasonable person might accidentally think it
refers to the other one (because, after all, the number one is a
perfectly reasonable floating-point number).  I claim that this call
should be ambiguous, and therefore illegal.  Likewise, "Mumble(1.0)"
could be mistaken to refer to the wrong one (because, after all, 1.0 is
an integer number).

If you want to require the ".0" in a call to the second one, as an extra
hint, I won't complain *too* much.  But I object to the ".0" being used
to help determine which Mumble we're talking about.

By the way, when I said "one half", I meant it as an English description
of a number.  Not as an Ada string literal.  I wanted to distinguish the
concept of numbers from the way they are written in Ada, so I could
complain about the latter clearly -- apparently it didn't work.  ;-)
So your point about converting "one half" is missing my point.

> : Note that Ada always converts literals to some particular type.
> 
> Sure... some type that is *closest* to the representation *as entered*. If
> you don't enter a decimal point, why would you expect it to be converted to
> a representation that requires a decimal point (fixed or floating)?

I don't understand why you think the form of a literal should have
something to do with the internal representation of the thing.  If that
were the case, we would be writing all numbers in binary, because that's
closer to their representation.  It seems to me that floating point is a
way of approximating the real numbers efficiently, at the expense of
some loss of precision.  Fixed point is a different way of doing the
same thing.  So it seems to me that the syntax for literals should
reflect the way we naturally write numbers, and not worry too much about
the internal representation.

> : Note also that I'm not advocating all manner of implicit conversions.
> : Certainly no implicit conversions that might lose information.
> 
> What about a conversion that adds *unintended* information?

I'm not sure what you mean by that.  Certainly if I say "it's about 10
miles from here to my house", you understand just as well as if I had
written "... 10.0 miles ...".  (In fact, I suppose 10.0 would confuse
you into thinking I was being overly precise -- but that's a whole
'nother issue.)  Leaving off the ".0" doesn't make you think miles are
discrete integer quantities, in English anyway.

- Bob



  reply	other threads:[~2001-03-28 23: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 [this message]
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
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