# Built-In Functions

Built-in functions are a library of utility methods and are frequently used to generate new values for variables and change existing ones.

These functions can be called from two places in the flow:

1. The dedicated [function call](../../../ide/nodes#function-call) flow node - **node functions**;
2. As a part of an expression authored via an [expression editor](../../ide/expression-editor) - **expression functions**.

The main difference between node and expression functions is whether they have an ability to modify variables that are passed to them as input arguments.&#x20;

The functions available in the [function call](../../../ide/nodes#function-call) flow node can directly change values stored in the argument variables - for example, remove an element from an existing array.&#x20;

The functions available in the [expression editor](../../ide/expression-editor) are so-called <mark style="color:purple;">pure</mark> functions. i.e. they leave all input arguments unchanged and only produce a new return value, which can then be stored in a variable, used as a part of a condition check. or passed to yet another function as an argument.

{% hint style="info" %}
a <mark style="color:purple;">pure</mark> function has the following properties:

1. the function return values are identical for identical arguments (no variation with local static variables, non-local variables, mutable reference arguments or input streams), and
2. the function has no side effects (no mutation of local static variables, non-local variables, mutable reference arguments or input/output streams).
{% endhint %}
