Hacker News new | ask | show | jobs
by mg 994 days ago
This:

    a = f((e(d(c(b))), 4), 5)
Seems not to make sense. Replacing c(b) with x we get:

    a = f((e(d(x)), 4), 5)
Replacing d(x) with x we get:

    a = f((e(x), 4), 5)
Replacing e(x) with x we get:

    a = f((x, 4), 5)
What is that?
1 comments

Sorry, messed up parens here. It should have been:

    a = f(e(d(c(b))), 4), 5)
b is passed to c, then the result is passed to d, then to e along with 4 as a second parameter, and finally to f along with 5.

    a = f(e(d(c(b))), 4), 5)
That has 4 opening parenthesis and 5 closing parenthesis.

    b is passed to c

        b ~> c

    then the result is passed to d

        b ~> c ~> d

    then to e along with 4 as a second parameter

        b ~> c ~> d,4 ~> e

    and finally to f along with 5

        b ~> c ~> d,4 ~> e,5 ~> f

    b ~> c ~> d,4 ~> e
This reads as

    b ~> c ~> (d, 4) ~> e
to me. Sure, you can get used to it, but it’s pretty unnatural. Is this syntax used in any other languages?
The nice aspect of "this ~> that" is that the meaning is simply "put this into that". And that it results in the shortest code.

An alternative would be:

    b ~> c ~> d ~> e(%,4)
Slightly longer, but maybe easier to read. Also easier to handle, as you can remove the fourth part " ~> e(%,4)" without having to change the third part.