User:LABoyd2/functions from manual 151008

Calculating values
Define a function for code readability and re-use.

Usage examples:

diameter = 20; function r_from_dia(dia) = dia / 2; echo("Diameter ", diameter, " is radius ", r_from_dia(diameter));

Functions can have multiple input variables of different types. The

Usage examples:

function f(x, vec) = x * vec[0] + 2 * x * vec[1]; echo(f(3, [4, 5])); // produces ECHO: 42

Default values
Starting from the last parameter, it's possible to define default values. Those are assigned in case the function call does not give all the parameters.

Usage examples:

function f(p1, p2 = 3, p3 = 0) = 100 * p1 + 10 * p2 + p3; echo(f(3, 2, 1)); // produces ECHO: 321 echo(f(3, 2));   // produces ECHO: 320 echo(f(3));      // produces ECHO: 330

Recursive function calls
Recursive function calls are supported. Using the Conditional Operator "... ? ... : ... " it's possible to ensure the recursion is terminated.

Note: There is a built-in recursion limit to prevent the application to crash. If the limit is hit, the result of the function call is undef.

Usage examples:

// recursion - find the sum of the values in a vector (array) // from the start (or s'th element) to the i'th element - remember elements are zero based function sumv(v,i,s=0) = (i==s ? v[i] : v[i] + sumv(v,i-1,s)); vec=[ 10, 20, 30, 40 ]; echo("sum vec=", sumv(vec,2,1)); // is 20+30=50