To: J3 J3/16-187r2 From: Dan Nagle Subject: remove commutative from co_reduce Date: 2016 June 07 Discussion REDUCE was added to provide an array-based version of CO_REDUCE. REDUCE originally had a requirement that the OPERATOR function must implement a mathematically commutative operation. This requirement was removed to allow useful but not commutative operations. The edits following remove the "must be commutative" requirement for the OPERATOR function of CO_REDUCE to bring it into line with REDUCE. No ordering options are provided, as there doesn't appear to be a "natural" order to enforce. An optional note is suggested to emphasize the consequences of non-commutative operations. Edits: In 13.9.49 CO_REDUCE [363:33-34] Change "commutative and associative" to "associative" {remove the requirement} [364:12+] optionally, add a note "Note 13.9+ If the OPERATOR function is not mathematically commutative, the result of calling CO_REDUCE can depend on the order of evaluations." {note describes the consequences of non-commutative operators}