Builtin Function: append
The built-in function append
appends a value to the end of a list. The list
is modified in-place. The return value will always be undefined.
append
called on any value other than a list or undefined will result
in an immediate error.
Examples:
append([1,2], 3) // [1, 2, 3]append(1, 3) // error()append(undefined, 3) // error()append([], undefined) // [undefined] (a list containing `undefined`)
Why does this function return undefined?
This function returns undefined
to avoid unintended side effects of the function in the context
of a rule.
For example, if append
returned the list value as a result, the following policy would depend
on the order in which rules are referenced:
list = []a = rule { append(list, 1) contains 1 }b = rule { append(list, 2) contains 2 } // Scenario 1: list becomes [1, 2]main = rule { a and b } // Scenario 2: list becomes [2, 1]main = rule { b and a }
This sort of side effect behavior introduces complex and difficult to track logical errors in programs.
As a result, functions like this return undefined
and modify values in-place.