On Monday, 17 March 2014 at 22:26:05 UTC, H. S. Teoh wrote:
On Mon, Mar 17, 2014 at 11:16:12PM +0100, Robert Schadek wrote:
replace .. with : to make lexing easier, please

        auto b = arr[(someCondition) ? w:x : y:z];

:-(


T

Julia has both the ternary conditional and ":" as an operator. In practice, they rarely come up in the same expressions, and when they do, parentheses are an easy solution.

    auto b = arr[someCondition ? (w:x) : (y:z)];

However, I think it's worth mentioning that--unless I've missed something--DIP58 doesn't introduce any parsing issues that aren't already present inside a SliceExpression:

    struct S { void opSlice(real a, real b) {} }

    S s;
    s[5. .. .5]; // Compiles.
    s[5... .5]; // Error.
    s[5. ...5]; // Error.
    s[5....5]; // Error.

This seems like reasonable behavior, in my opinion.

It seems like ":" and ".." both have their pros and cons, but ".." allows backwards compatibility to be preserved, and I don't see how ":" can be worked in elegantly without breaking lots of code.

Reply via email to