|
Posted by Norman Peelman on 05/29/06 06:06
"Oli Filth" <catch@olifilth.co.uk> wrote in message
news:5qreg.6768$sX1.3271@newsfe1-gui.ntli.net...
> Norman Peelman said the following on 29/05/2006 00:05:
> > "Chung Leong" <chernyshevsky@hotmail.com> wrote in message
> > news:1148841404.688262.297960@i40g2000cwc.googlegroups.com...
> >> Norman Peelman wrote:
> >>> The bottom line is this... precedence can only 'guess' so much as to
> > what
> >>> you the programmer wants and it normally does a great job. But when
you
> >>> start mixing two different functions ('.' and '+') it has to make
> >>> assumptions, and those assumptions are to work on what is immediately
> > known
> >>> and that is what is to the immediate left and right:
> >> I'm sorry but you're missing the entire point of the discussion. The
> >> point is that the ambiguity is illogical and should not exist. To use
> >> your terminology, apples are apples, oranges are oranges. Putting them
> >> all in one bin and then guess at what you've got is stupid.
> >>
> >
> > So, what would you want to happen? Should the parser go through each
> > entire string looking for math equations first then string everything
> > together after.
>
> Who has suggested anything of the sort?
>
>
> > The bottom line is that '.' and '+' are/were not really meant to be used
at
> > the same time as one works with strings and one works with mathematics.
>
> Says who?
>
>
Doesn't the fact that there are two different functions suggest that?
> > So normally there would be no ambiguity.
>
> There's no ambiguity; the behaviour is well-defined. However, there
> *is* unintuitive behaviour.
true...
>
>
> > If you want:
> >
> > $a = 'If you multiply ' + 2 + 5 + 3 + ' by ' + 2 * 5 + ' you get ' + 10
*
> > 10;
> >
> > then you're asking too much of one operator let alone the parser.
>
> Assuming you mean "overload {+} to do both string concatenation and
> addition", then you may well be right, it probably wouldn't be possible
> to come up with a sensible precedence scheme so that the above example
> gave the same result as:
>
> $a = 'If you multiply ' . (2 + 5 + 3) . ' by ' . (2 * 5) . ' you get ' .
> (10 * 10);
>
> However, we're not talking about operator overloading. What we're
> talking about is the operator precedence in PHP being unintuitive. If
> there were an "intuitive" operator precedence (with {.} lower than
> {+,-}), then the code below would give the same result:
>
> $a = 'If you multiply ' . 2 + 5 + 3 . ' by ' . 2 * 5 . ' you get ' . 10
> * 10;
>
>
Got it...
Norm
Navigation:
[Reply to this message]
|