> For the complete documentation index, see [llms.txt](https://apogeejs.gitbook.io/apogeejs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apogeejs.gitbook.io/apogeejs/getting-started.tutorials/defining-functions.md).

# Defining Functions

This tutorial shows the different ways of defining functions

**Example workspace:** [**Defining Functions Example Workspace**](https://www.apogeejs.com/apogee.html?url=https://www.apogeejs.com/web/examples/DefiningFunctions.json)

The workspace linked above contains five tables (plus the notes table). Four of them contain formulas, each multiplying the elements of the other table by a factor of two, with alternate ways of defining the needed function.

* **plainValue** - This data table contains a plain static value, an array of numbers.
* **derivedValue** - This table uses the array map function to multiply each element of *plainValue* by two. The function called by *map* is defined inline.
* **alternateDerivedView** - This table also uses the array map function to multiply each element of *plainValue* by two. Howeever, it defines the function called by *map* elsewhere. It puts it in the *private code* section of the table. The view dropdown shows the different sections of the table, including the data, the formula and the private code sections. The private code section allows you to put constants and functions accessed from your formula, to keep the code a little cleaner.
* **anotherAlternateDerivedView** - This table also uses the array map function to multiply each element of *plainValue* by two. However, it uses an external function in the call to the array *map* function. See *testFunction* below.
* **testFunction** - This is an external function, which is used by the data table *anotherAlternateDerivedView*. A function table can be created as you would create a data table, except you select *Add Function* instead of *Add Data Table.* A function table behaves like a normal javacript function when called by other tables.

There is one more way to make a function inside of Apogee, a *folder function*. We will cover that later.
