Hello Marc,

Friday, July 9, 2004, 1:33:02 AM, you wrote:



> Rasmus Lerdorf wrote:

>> On Thu, 8 Jul 2004, Marc Richards wrote:
>> 
>>>Rasmus Lerdorf wrote:
>>>
>>>>On Thu, 8 Jul 2004, Marc Richards wrote:
>>>>
>>>>
>>>>>Does it?  There are other similar constructs that don't e.g. +=, $a ? $b
>>>>>: $c, .=;
>>>>
>>>>
>>>>These have roots in other languages and as such have a familiarity to 
>>>>them.  ?: would be a brand new operator nobody has seen before and one 
>>>>that looks a lot like the ternary operator which everyone knows about.
>>>>
>>>
>>>We can always create a name for the construct (in the same way the 
>>>ternary statement has a name) and properly document it.  If it becomes 
>>>useful and popular, people will start calling it that.  Proper 
>>>documentation doesn't require an actual function name.
>> 
>> 
>> That wasn't my point.  The point was that every operator in PHP is common
>> and known to the majority of people familiar with any other language. You
>> are proposing adding a new operator never seen before.  Giving it a name 
>> won't help because how will people know this name?  

> They won't.  Not until they hear about it or read about it.  But that is 
> true whether it is a function or and operator.  Making it a function 
> won't make everyone magically cogniscent of it.  Of course it will be 
> important to make it easy to search for information about it on PHP.net, 
> which includes allowing people to search for ?: and providing a courtesy 
> link from the ternary operator section.


>>The way you name an operator is to make it a function.  

> Huh? I must be misunderstanding what you mean to say, because as far as 
> I can tell that just isn't true otherwise we would have functions like 
> add(), subtract() and ternary().


>>>>>I think that part of the reason that these things are so terse is 
>>>>>because if would defeat the whole point to use a function name; The aim
>>>>>is to be concise.
>>>>
>>>>No, the aim is not conciseness.  That has never been PHP's goal.  The aim
>>>>is clarity.
>>>
>>>I wasn't saying it was a PHP goal, I was it is the goal of certain 
>>>constructs like += or .=
>> 
>> 
>> += is not unique to PHP in any way.  Pick 10 random mediocre PHP or
>> non-PHP developers out of a crowd and ask then what += does and I bet a 
>> good number will be able to tell you.  Do the same with ?: and you will 
>> first have to carefully explain that no, this is not the ternary ? : 
>> operator, but rather a single ?: operator and then ask them to guess at 
>> what it might do.  How many do you think will figure it out?
>> 
>> We don't do things to save people typing a couple of extra characters here
>> and there.  We do things to lower the WTF factor of the language as much
>> as possible.  The overall design from the very beginning has been to meet
>> the expectations of the common developer.  The common developer expects
>> common operators such as += ++ -- != to do the right things.  

> Are you saying PHP will never introduce an operator that doesn't already 
> exist in a large number of other languages?


>> Not having
>> these would give us a high WTF factor.  Nobody in the world expects a ?:
>> operator which is not the ternary operator.  And having such an operator
>> would indeed be a big surprise and as such its WTF factor is high.
>> 

> To be honest I am kinda hot and cold about how close it is to the 
> ternary operator.  On the one hand the two could be easily confused, but 
> on the other hand they are in fact very similar in function in which 
> case we could "market" (meaning document) them as being related.

> Ternary operator:

> $a = $b ? $b : $c;

> Compound Ternary operator:

> $a = $b ?: $c;


> The only asymmetry being that the "compound ternary operator" doesn't 
> throw and error if !isset($b) whereas the regular one does...deal 
> breaker? I dunno.

AND ?: won't be ternary....the whole reason for that operators name is that
obviously noone had a good name for it. But since it is the only ternary
operator (at least in all the languages i know) everybody calls the
construct ternary operator.

-- 
Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to