rfc:operator_functions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:operator_functions [2017/09/09 00:14] – fix table format ajfrfc:operator_functions [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 62: Line 62:
 <code php> <code php>
 // Select only the positive numbers // Select only the positive numbers
-$positiveSubset = array_filters($numbers, partialApply('>', 0));+$positiveSubset = array_filter($numbers, partialApply('<', 0));
 </code> </code>
 +
 +An example working partial application implementation would be:
 +
 +<file php partialApply.php>
 +function partialApply(callable $c, ...$args) {
 +    return function (...$args2) use ($c, $args) {
 +        return $c(...$args, ...$args2);
 +    };
 +}
 +</file>
  
 ==== Detail ==== ==== Detail ====
Line 78: Line 88:
 The table below lists the new functions that would be added to the root namespace (''\''). Each is named the same as its corresponding operator, including any aliases (for the sake of consistency). The table below lists the new functions that would be added to the root namespace (''\''). Each is named the same as its corresponding operator, including any aliases (for the sake of consistency).
  
-^ Function signature        ^ Corresponding operation             ^ Notes                 +^ Function signature        ^ Corresponding operation             ^ Notes                       
-| <php>'+'($a[, $b])</php>  | <php>+$a</php>, <php>$a + $b</php>                       +| <php>'+'($a[, $b])</php>  | <php>+$a</php>, <php>$a + $b</php>                             
-| <php>'-'($a[, $b])</php>  | <php>-$a</php>, <php>$a - $b</php>                       +| <php>'-'($a[, $b])</php>  | <php>-$a</php>, <php>$a - $b</php>                             
-| <php>'*'($a, $b)</php>    | <php>$a * $b</php>                  |                       +| <php>'*'($a, $b)</php>    | <php>$a * $b</php>                  |                             
-| <php>'/'($a, $b)</php>    | <php>$a / $b</php>                  |                       +| <php>'/'($a, $b)</php>    | <php>$a / $b</php>                  |                             
-| <php>'%'($a, $b)</php>    | <php>$a % $b</php>                  |                       +| <php>'%'($a, $b)</php>    | <php>$a % $b</php>                  |                             
-| <php>'**'($a, $b)</php>   | <php>$a ** $b</php>                                       +| <php>'**'($a, $b)</php>   | <php>$a ** $b</php>                                             
-| <php>'&'($a, $b)</php>    | <php>$a & $b</php>                  |                       +| <php>'&'($a, $b)</php>    | <php>$a & $b</php>                  |                             
-| <php>'|'($a, $b)</php>    | <php>$a | $b</php>                  |                       +| <php>'|'($a, $b)</php>    | <php>$a | $b</php>                  |                             
-| <php>'^'($a, $b)</php>    | <php>$a ^ $b</php>                  |                       +| <php>'^'($a, $b)</php>    | <php>$a ^ $b</php>                  |                             
-| <php>'~'($a)</php>        | <php>~$a</php>                      |                       +| <php>'~'($a)</php>        | <php>~$a</php>                      |                             
-| <php>'<<'($a, $b)</php>   | <php>$a << $b</php>                                       +| <php>'<<'($a, $b)</php>   | <php>$a << $b</php>                                             
-| <php>'>>'($a, $b)</php>   | <php>$a >> $b</php>                                       +| <php>'>>'($a, $b)</php>   | <php>$a >> $b</php>                                             
-| <php>'=='($a, $b)</php>   | <php>$a == $b</php>                                       +| <php>'=='($a, $b)</php>   | <php>$a == $b</php>                                             
-| <php>'==='($a, $b)</php>  | <php>$a === $b</php>                |                       +| <php>'==='($a, $b)</php>  | <php>$a === $b</php>                |                             
-| <php>'!='($a, $b)</php>   | <php>$a != $b</php>                                       +| <php>'!='($a, $b)</php>   | <php>$a != $b</php>                                             
-| <php>'<>'($a, $b)</php>   | <php>$a <> $b</php>                                       +| <php>'<>'($a, $b)</php>   | <php>$a <> $b</php>                                             
-| <php>'!=='($a, $b)</php>  | <php>$a !== $b</php>                |                       +| <php>'!=='($a, $b)</php>  | <php>$a !== $b</php>                |                             
-| <php>'<'($a, $b)</php>    | <php>$a < $b</php>                  |                       +| <php>'<'($a, $b)</php>    | <php>$a < $b</php>                  |                             
-| <php>'>'($a, $b)</php>    | <php>$a > $b</php>                  |                       +| <php>'>'($a, $b)</php>    | <php>$a > $b</php>                  |                             
-| <php>'<='($a, $b)</php>   | <php>$a <= $b</php>                                       +| <php>'<='($a, $b)</php>   | <php>$a <= $b</php>                                             
-| <php>'>='($a, $b)</php>   | <php>$a >= $b</php>                                       +| <php>'>='($a, $b)</php>   | <php>$a >= $b</php>                                             
-| <php>'<=>'($a, $b)</php>  | <php>$a <=> $b</php>                |                       +| <php>'<=>'($a, $b)</php>  | <php>$a <=> $b</php>                |                             
-| <php>'&&'($a, $b)</php>   | <php>$a <=> $b</php>                | Can't short-circuit. +| <php>'&&'($a, $b)</php>   | <php>$a && $b</php>                 | Can'fully short-circuit. 
-| <php>'and'($a, $b)</php>  | <php>$a and $b</php>                | Can't short-circuit. +| <php>'and'($a, $b)</php>  | <php>$a and $b</php>                | Can'fully short-circuit. 
-| <php>'||'($a, $b)</php>   | <php>$a || $b</php>                 | Can't short-circuit. +| <php>'||'($a, $b)</php>   | <php>$a || $b</php>                 | Can'fully short-circuit. 
-| <php>'or'($a, $b)</php>   | <php>$a or $b</php>                 | Can't short-circuit. +| <php>'or'($a, $b)</php>   | <php>$a or $b</php>                 | Can'fully short-circuit. 
-| <php>'xor'($a, $b)</php>  | <php>$a xor $b</php>                |                       +| <php>'xor'($a, $b)</php>  | <php>$a xor $b</php>                |                             
-| <php>'!'($a)</php>        | <php>!$a</php>                      |                       +| <php>'!'($a)</php>        | <php>!$a</php>                      |                             
-| <php>'.'($a, $b)</php>    | <php>$a . $b</php>                  |                       |+| <php>'.'($a, $b)</php>    | <php>$a . $b</php>                  |                             |
  
 Since <php>pow()</php> already exists and behaves identically to how <php>'**'()</php> would, <php>'**'()</php> is simply an alias of it. Since <php>pow()</php> already exists and behaves identically to how <php>'**'()</php> would, <php>'**'()</php> is simply an alias of it.
Line 153: Line 163:
 The existing operators themselves behave the same as ever. The existing operators themselves behave the same as ever.
  
-Quoting function names in function calls is not new, it is a consequence of [[rfc:uniform_variable_syntax|Uniform Variable Syntax]].+Being able to quote function names in function calls (e.g. <php>'+'(1, 1)</php>is not new idea introduced by this RFC, it has been possible since [[rfc:uniform_variable_syntax|Uniform Variable Syntax]] in PHP 7.0.
  
 ===== Future Scope ===== ===== Future Scope =====
rfc/operator_functions.1504916064.txt.gz · Last modified: 2017/09/22 13:28 (external edit)