On Sun, Sep 6, 2015 at 11:54 PM, Andrea Faulds <a...@ajf.me> wrote:
> Hi Bob,
>
> This has probably already come up, but I'd like to weigh in on the symbol
> choice.
>
> On the subject of syntax, ~> (let's call it the squiggle arrow) seems like a
> very poor choice compared to ==> (let's call it Hack's arrow).
>
> I think it's been mentioned that ==>, Hack's arrow, was thought to be likely
> to be confused with =>, the key/value separator in array() and foreach().
> But I'd argue this is actually rather unlikely, for two reasons.
>
> The first of these is that ==> is a whole column wider. So, if there's a
> smudge on the screen or something, you could still clearly distinguish ==>
> from =>. They're visually distinct, much like =, == and === are, which I'm
> sure any PHP programmer can tell apart.
>
> Second, => is only used in very limited contexts. You can't use => in a
> normal expression or statement. You can't mistake ($t ==> $f ==> $t) for ($t
> => $f => $t) for long, because the latter would never be a valid expression.
> And in the contexts where => does work, it's unlikely you'd be using a
> closure – at least, I can't think of a case where you'd want to create a
> numeric array of closures using a literal.
>
> For those two reasons, I don't agree that confusing ==> with => would be a
> big problem.
>
> Now ~>, the squiggle arrow, was supposedly chosen to reduce the likelihood
> of confusion. However, I would argue that it is actually *more* likely to
> cause confusion. In this case the potential confusion would be with ->, the
> object property dereference operator. I have two reasons for why the two
> operators would be confused, and they're the respective inverses of the
> reasons why => and ==> wouldn't.
>
> First, ~> visually takes up the same amount of space as ->, so if you have a
> small character size, a blurry or low-resolution screen, or poor eyesight,
> there's nothing aside from the very slight curvature (and maybe syntax
> highlighting, which does not yet exist) to distinguish ~> from ->.
>
> Second, ->, the object property dereference operator, is used in a wide
> range of contexts. It's a valid expression (and thus statement), and so
> would crop up in many places where ~>, the squiggle arrow, also would. A
> realistic example of this is the Church Booleans, an encoding of the boolean
> values "true" and "false" in the lambda calculus: "true" is a function that
> takes two arguments and returns the first, and "false" is a function that
> takes two arguments and returns the second. The "true" function would be
> written, using squiggle arrows, as ($a ~> $b ~> $a). Now, if you squint, can
> you tell that apart from ($a ~> $b -> $a)? Did you even notice the
> difference in that second expression? (The second squiggle arrow become a
> dereference operator.) I wouldn't be surprised if you didn't. And the
> difference wouldn't always be immediately obvious from context. Here, the
> unusual spacing might give it away (a variable property access would usually
> be $b->$a), but not everyone is going to put spaces around their squiggle
> arrows.
>
> For those two reasons alone, I think ~> is a poor choice. And that's without
> the ugliness issue: in some fonts, particularly Japanese ones, ~ is rendered
> at the top of the character box, like an overline. In such a font, ~> will
> not look like an arrow.
>
> You did mention that the HHVM team might find things easier if you chose ~>
> instead of ==>, given Hack already has ==>. Surely, though, that only
> matters if ==> has different semantics in PHP and Hack, yet this proposal
> matches Hack's implementation exactly, so far as I can tell. Also, it would
> be nice if PHP and Hack don't diverge when implementing the same features,
> unless there's a particularly good reason... it's not very kind to people
> who use both languages.
>
> So, to conclude, I would urge you to change the RFC to use ==> instead of
> ~>.
>
> Thanks.
>
> --
> Andrea Faulds
> http://ajf.me/
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>

Hello,

these are all good points.

Also, I realized it's definitely harder to write ~ than =. On my
keyboard layout (Czech Qwerty) I have to do "right alt + shift + (key
above Tab)". I'm not sure how it is with other non-US keyboard
layouts, but it might be worth exploring before deciding on a symbol;
or maybe there's a possibility that my keyboard layout is just an
anomaly and you can write ~ on most keyboard layouts with a single key
(or double).

Regards
PK

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

Reply via email to