Re: [RFC] Combined Comparison (Spaceship) Operator
| From: | Andrea Faulds | Date: | Mon, 19 Jan 2015 14:29:08 +0000 |
| Subject: | Re: [RFC] Combined Comparison (Spaceship) Operator | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-80821@lists.php.net to get a copy of this message | ||
Hey Nikita,
> On 19 Jan 2015, at 14:07, Nikita Popov <nikita.ppv@gmail.com> wrote:
>
> I like the idea behind this (exposing internal compare_function), but I don't want to have
> an extra operator for a minor use case. Please just introduce a function instead.
I originally wanted a function, but an operator has some advantages. There’s no
backwards-compatibility issues from function name conflicts (nor do we have to break with tradition
and use a namespace despite everything else not having one). The syntax is similar to other
comparisons: we don’t have lt(), gt(), lt_or_eq(), gt_or_eq(), eq() and not_eq(), we have <,
>, <=, >=, == and !=. Why, then, should we have cmp() or compare()? We get to fix one of
C’s mistakes here, in that C (unlike FORTRAN of all things) failed to provide a three-way
comparison operation despite it being useful and often available natively. <=> has a certain
brevity and is familiar to Ruby and Perl users.
Plus, it looks cool and has a cool name (not really an argument, I know).
Still, there is a case for a function, but I’m trying for an operator for now. I quite like how
this feature makes multi-item comparisons much simpler.
--
Andrea Faulds
http://ajf.me/