# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# `misc`::`genassop`

Generates an n-ary associative operator from a binary one

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.

## Syntax

```misc::genassop(`binaryop`, `zeroelement`)
```

## Description

`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.

### Note

`misc::genassop` doesn't check whether `binaryop` is really associative and whether `zeroelement` is really a neutral element for `binaryop`.

## Examples

### Example 1

We know that `_plus` is an n-ary operator anyway, but let us assume that `_plus` was only a binary operator. We can create an own n-ary 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.

## Parameters

 `binaryop` A function `zeroelement` An object

## Return Values

`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)```.