Author: larry
Date: Wed Oct 1 12:54:11 2008
New Revision: 14585
Modified:
doc/trunk/design/syn/S03.pod
Log:
Revision to accumulator semantics so that -= dwims
Modified: doc/trunk/design/syn/S03.pod
==============================================================================
--- doc/trunk/design/syn/S03.pod (original)
+++ doc/trunk/design/syn/S03.pod Wed Oct 1 12:54:11 2008
@@ -3251,8 +3251,20 @@
If you apply an assignment operator to a protoobject, it is assumed that
you are implementing some kind of notional "reduction" to an accumulator
-variable. To that end, the base operator is dropped and a simple
-assignment is done instead. Hence you may correctly write:
+variable. To that end, the operation is defined in terms
+of the corresponding reduction operator, where the protoobject
+becomes the operator's identify value. So if you say:
+
+ $x -= 1;
+
+it is more or less equivalent to:
+
+ $x = [-]() unless defined $x; # 0 for [-]()
+ $x = $x - 1;
+
+and $x ends up with -1 in it, as expected.
+
+Hence you may correctly write:
my Num $prod;
for @factors -> $f {