Generates an n-ary associative operator from a binary one
This functionality does not run in MATLAB.
misc::genassop(binaryop, zeroelement) generates an n-ary 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.
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.
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).