On 02/09/2015 22:49, Sara Golemon wrote:
Beautiful code is code that is easier to
maintain, and code that is easier to maintain is often more secure and
reliable.

I think this is an important point. Obviously, "beauty" is subjective: some people will find very verbose, English-like code easier to read; others might try to squeeze as much information into one screenful as possible, so they can see the whole program at a glance.

At one extreme, SQL has mandatory words like the "AS" in "CAST(x AS int)" just to "look more like English"; at the other, APL has symbols all of its own with their own Unicode code points. Most languages aim for some compromise in between.


So I would like to put forward for consideration these amendments to the proposal, in the spirit of compromise (in no particular order; numbers are just for reference in future discussion):

Amendment 1. Only allow the single-expression form of the short syntax; full function bodies must be declared with the existing function(){ ... } syntax. This gives a clearer distinction between how the two syntaxes can be used.

Amendment 2. Make the ~> operator non-associative, so that lambdas returning lambdas would need an extra pair of brackets making the nesting explicit. To take one of Anthony's examples:

function partial(callable $cb) {
    return $left ~> ( $right ~> $cb($left, $right) );
}

It's now at least clearer that there are two different anonymous functions 
here, even if it's not entirely clear what they're trying to achieve...

Amendment 3. Make the parentheses around the argument list mandatory so that (if Amendment 1 is also adopted) there is only a single variant of the syntax, namely "( param list ) ~> expression".

Amendment 4. Consider a syntax involving an explicit "use". This one requires a bit more exploration, but maybe something like:
( $a use $b ) ~> $a + $b
or:
( $a ) use ( $b ) ~> $a + $b


Perhaps there are other thoughts along these lines that could move the proposal beyond a simple love/hate debate.

Regards,

--
Rowan Collins
[IMSoP]


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

Reply via email to