Generates an nary associative operator from a binary one
This functionality does not run in MATLAB.
misc::genassop(binaryop
, zeroelement
)
misc::genassop(binaryop, zeroelement)
generates
an nary associative operator from the binary operator binaryop
,
where zeroelement
is a neutral element for binaryop
.
binaryop
must be a function taking two arguments
(no matter of what kind) and returning a valid argument to itself.
It must satisfy the associative law binaryop
(binaryop
(a,
b), c) = binaryop
(a, binaryop
(b,
c)).
zeroelement
is an object such that binaryop
(a,
zeroelement) = a
holds for every a
.
misc::genassop
returns a procedure which
returns zeroelement
if it is called without arguments
and the argument if it is called with one argument.
Note:

We know that _plus
is an nary operator anyway, but
let us assume that _plus
was only a binary operator. We
can create an own nary addition as follows:
myplus := misc::genassop(_plus, 0)
Now we make myplus
add some values.
myplus(3, 4, 8), myplus(5), myplus()
As mentioned in the "Details" section, myplus
returns
the argument if is called with exactly one argument, and it returns
the zeroelement
0
if it is
called without arguments.

A function 

An object 
misc::genassop
returns a procedure f
.
That procedure accepts an arbitrary number of arguments of the same
kind binaryop
does; it returns zeroelement
if
it is called without argument, and its only argument if it is called
with one argument; its value on n arguments
is inductively defined by f(x1, ..., xn)=f(binaryop(x1,x2),
x3,...,xn)
.