On Tue, 2009-01-13 at 11:49 -0500, Patrick Durusau wrote:
> Andreas,
>
> Andreas J Guelzow wrote:
> > On Tue, 2009-01-13 at 11:26 -0500, Patrick Durusau wrote:
> >
> >> Greetings!
> >>
> >> Just a quick note to check my understanding of the "constraint" listing
> >> for each function.
> >>
> >> Under 6.3.5 Infix Operator "^"
> >>
> >> Constraints: OR(Left != 0; Right != 0)
> >>
> >
> > This is the same as:
> > not (Left == 0 and Right == 0)
> >
> > so the only thing prohibited is 0^0.
> > 0^(some non-zero number) and (some non-zero number)^0 are both allowed.
> >
> >
> OK, but then the statement:
>
> > Implementations *shall* compute 0^0 as one of 0, 1, or an Error, but
> > it is implementation-defined which of these options is the result.
> >
> Is incorrect.
>
> According to your reading, we have prohibited 0^0 and then in a
> following paragraph mandated it but don't define the result.
>
> If it is prohibited, there is no valid result. (full stop)
There has to be a result.
If a user uses 0^0 some value _must_ be returned.
Since it violates the constraint imho it should be an Error. I guess the
draft wants to allow other values (namely 0 or 1 as continuous
continuations of related functions) but prohibit anything else.
Personally I think it should always return an error.
Andreas
--