rfc:pow-operator

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
rfc:pow-operator [2013/12/19 18:36]
datibbaw
rfc:pow-operator [2014/02/07 06:46]
bwoebi Better (consistent) wording
Line 1: Line 1:
  
 ====== PHP RFC: Power Operator ====== ====== PHP RFC: Power Operator ======
-  * Version: 0.2+  * Version: 0.3
   * Date: 2013-11-23   * Date: 2013-11-23
   * Author: Tjerk Meesters, datibbaw@php.net   * Author: Tjerk Meesters, datibbaw@php.net
-  * Status: Voting+  * Status: Implemented in PHP 5.6
   * First Published at: http://wiki.php.net/rfc/pow-operator   * First Published at: http://wiki.php.net/rfc/pow-operator
   * Revision (0.1 → 0.2): 2013-12-19   * Revision (0.1 → 0.2): 2013-12-19
 +  * Revision (0.2 → 0.3): 2013-12-21
  
 ===== Introduction ===== ===== Introduction =====
  
-This proposal is three-fold:+This proposal is two-fold:
  
-  - Turn the existing [[http://php.net/pow|pow()]] function into a language construct.+  - Introduce an exponential (right associativeoperator ''<nowiki>**</nowiki>''.
     * Avoids a function call.     * Avoids a function call.
     * Support for [[rfc:operator_overloading_gmp|GMP overloading]].     * Support for [[rfc:operator_overloading_gmp|GMP overloading]].
-  - Introduce an exponential (right associative) operator ''<nowiki>**</nowiki>''. 
     * Easier to read and shorter to write.     * Easier to read and shorter to write.
     * Can be found in other languages.     * Can be found in other languages.
Line 21: Line 21:
  
 ===== Proposal ===== ===== Proposal =====
- 
-**pow() as language construct** 
- 
-No changes to existing code, safe for one: 
- 
-<code php> 
-var_dump(pow([], 2)); // int(0) instead of float(0) 
-</code> 
- 
-**Power operator** 
  
 A short working example: A short working example:
Line 76: Line 66:
 echo ~3 ** 2; // -10 (not 16) echo ~3 ** 2; // -10 (not 16)
 </code> </code>
 +
 +===== Changelog =====
 +
 +21-Dec-2013: 
 +  * Removed turning pow() into a language construct from the proposal, due to BC breaks.
 +  * Closed vote and moved RFC back to Discussion status.
 +  * Reverted commit [[https://github.com/datibbaw/php-src/commit/f60b98cf7a8371233d800a6faa286ddba4432d02|f60b98c]].
 +
 +22-Dec-2013:
 +  * Moved RFC back to Voting status
  
 ===== Discussion ===== ===== Discussion =====
Line 86: Line 86:
   * http://math.stackexchange.com/questions/491933/exponent-rules-with-negative-numbers   * http://math.stackexchange.com/questions/491933/exponent-rules-with-negative-numbers
   * http://math.stackexchange.com/questions/68833/what-does-22-evaluate-to/68834#68834   * http://math.stackexchange.com/questions/68833/what-does-22-evaluate-to/68834#68834
 +
 +**Similar languages**
 +
 +  * Ada
 +  * D
 +  * F#
 +  * Fortran
 +  * Freemat
 +  * Haskell
 +  * Mathematica / Matlab / Scilab
 +  * Octave
 +  * Perl
 +  * Python
 +  * R
 +  * Ruby
 +  * Sage
 +  * VB / Basic
 +
 +**Dissimilar languages**
 +
 +  * Bash
 +  * Cobol
 +  * ColdFusion
 +  * Excel
 +  * Tcl
  
 ---- ----
Line 139: Line 164:
  
 External extensions such as [[http://pecl.php.net/package/vld|vld]] or [[https://github.com/krakjoe/phpdbg|phpdbg]] would have to be updated, but I'm not aware of any core extensions that would otherwise be affected. External extensions such as [[http://pecl.php.net/package/vld|vld]] or [[https://github.com/krakjoe/phpdbg|phpdbg]] would have to be updated, but I'm not aware of any core extensions that would otherwise be affected.
- 
-===== Open Issues ===== 
- 
-None. 
  
 ===== Vote ===== ===== Vote =====
Line 148: Line 169:
 Voting will be based on the following: Voting will be based on the following:
  
-  * Turn ''pow()'' into a language construct, 
   * Add the power operators ''<nowiki>**</nowiki>'' and ''<nowiki>**</nowiki>='',   * Add the power operators ''<nowiki>**</nowiki>'' and ''<nowiki>**</nowiki>='',
   * Add ''ZEND_POW'' and ''ZEND_ASSIGN_POW'' opcodes.   * Add ''ZEND_POW'' and ''ZEND_ASSIGN_POW'' opcodes.
Line 160: Line 180:
 ---- ----
  
-<doodle title="Should PHP get a power operator in 5.6?" auth="datibbaw" voteType="single" closed="false">+<doodle title="Should PHP get a power operator in 5.6?" auth="datibbaw" voteType="single" closed="true">
    * Yes, right associative    * Yes, right associative
    * Yes, non associative    * Yes, non associative
Line 169: Line 189:
  
 Voting ends on 5th of January 2014. Voting ends on 5th of January 2014.
 +
  
  
Line 175: Line 196:
 Power operator PR: https://github.com/php/php-src/pull/543 Power operator PR: https://github.com/php/php-src/pull/543
  
 +PHP 5.6 Commits: [[http://git.php.net/?p=php-src.git;a=commit;h=aff56f3c4539869910cf2778cf0ece2d8c2dd671|1]] [[http://git.php.net/?p=php-src.git;a=commit;h=363ff60475d93716722034b8f7a2486229bf4cfb|2]]
rfc/pow-operator.txt · Last modified: 2017/09/22 13:28 (external edit)