comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Division by zero
Date: 29 Jun 2005 09:27:01 -0400
Date: 2005-06-29T09:27:01-04:00	[thread overview]
Message-ID: <wcck6kdguoq.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: FBqwe.11196$U4.1427771@news.xtra.co.nz

"Lurker" <nowhere@nothing.com> writes:

> "Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message
> news:wccy88ugorw.fsf@shell01.TheWorld.com...
> 
> > 11.6(5) is all about run time effects.  If divide by zero were illegal
> > (which means at compile time), then 11.6 would not apply.
> 
> Which brings us back to my original question - why is it legal?

Just to be cleear, we're talking about whether X/Y should be illegal
when Y is a static expression equal to 0.  It is illegal if X is also
static, but it is legal if X is nonstatic.

The reason is that it simplifies the language definition.  For any
particular "kind" of error, the language design style used for Ada is to
choose one of:

    - always detect this error at compile time

    - always detect this error at run time

For division by zero, it is believed to be too restrictive to detect it
at compile time.  Therefore it's a run-time error.  And we trust
compilers to give warnings in cases that can be detected at compile
time.  But it would complicate the language definition to describe such
cases, and it would not be clear how "smart" to require the compiler to
be.

Static expressions are special, though: the compiler needs to know the
value of the expression, at last sometimes.  We have to make things like
this:

    T'First(1/0)

illegal, for example, because the type of that expression depends on the
value of 1/0, which doesn't make sense.

(In the above, I'm ignoring the rare cases of errors that are not
detected at all, or are detected at link time, etc.)

> Please excuse all examples of custom "/" definitions. Let's assume
> we are talking about predefined division operation on integers.

I agree -- everybody is confusing the issue by talking about
user-defined functions that happen to be called "/".
We're talking about predefined division only.

> Why would division by zero be allowed? (If you want to redefine
> your operations, then all bets are off of course, but what about
> the default ones?)

- Bob



  reply	other threads:[~2005-06-29 13:27 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-11 21:03 Division by zero Lurker
2005-06-12  2:00 ` David C. Hoos, Sr.
2005-06-12  3:04   ` Lurker
2005-06-12  8:39     ` Dmitry A. Kazakov
2005-06-12  9:43       ` Lurker
2005-06-12 10:36         ` Marius Amado Alves
2005-06-12 11:53         ` Dmitry A. Kazakov
2005-06-13  8:03         ` Ole-Hjalmar Kristensen
2005-06-12 13:10       ` Robert A Duff
2005-06-12 16:55         ` Jeffrey Carter
2005-06-13  3:22           ` Keith Thompson
2005-06-14  2:14             ` Jeffrey Carter
2005-06-13  8:47           ` Lurker
2005-06-14  2:19             ` Jeffrey Carter
2005-06-14  8:35               ` Keith Thompson
2005-06-13 12:19           ` Robert A Duff
2005-06-14  2:31             ` Jeffrey Carter
2005-06-14  8:21             ` Lurker
2005-06-14 20:22               ` Randy Brukardt
2005-06-28 21:22               ` Robert A Duff
2005-06-29  5:50                 ` Lurker
2005-06-29 13:27                   ` Robert A Duff [this message]
2005-06-29 13:54                     ` Dmitry A. Kazakov
2005-06-29 16:03                       ` Robert A Duff
2005-06-30  1:19                     ` Lurker
2005-06-30 11:16                       ` Stuart Palin
2005-06-29 13:50                   ` Dmitry A. Kazakov
2005-06-29 16:07                     ` Robert A Duff
2005-06-30  8:27                       ` Dmitry A. Kazakov
2005-06-29  9:20                 ` Lurker
2005-06-29  9:49                   ` Christoph Grein
2005-06-29 10:40                     ` Lurker
2005-06-29 11:04                       ` Jeff Creem
2005-06-29 12:28                         ` Martin Dowie
2005-06-29 13:40                   ` Robert A Duff
     [not found]     ` <5sana1pm436l6vboifijqblu0irf84afkr@4ax.com>
2005-06-12 17:38       ` Simon Wright
2005-06-12 12:21 ` Robert A Duff
2005-06-12 22:53 ` Georg Bauhaus
2005-06-13  8:34   ` Lurker
2005-06-13  8:54     ` Marius Amado Alves
2005-06-13 17:59       ` Simon Wright
replies disabled

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