# Function

Intuitively, a function \(f\) is a procedure (or machine) that takes an input and performs some operations to produce an output. For example, the function “+” takes a pair of numbers as input and produces their sum as output: on input (3, 6) it produces 9 as output, on input (2, 18) it produces 20 as output, and so on.

Formally, in mathematics, a function \(f\) is a relationship between a set \(X\) of inputs and a set \(Y\) of outputs, which relates each input to exactly one output. For example, \(-\) is a function that relates the pair \((4, 3)\) to \(1,\) and \((19, 2)\) to \(17,\) and so on. In this case, the input set is all possible pairs of numbers, and the output set is numbers. We write \(f : X \to Y\) (and say “$f$ has the type \(X\) to \(Y\)”) to denote that \(f\) is some function that relates inputs from the set \(X\) to outputs from the set \(Y\). For example, \(- : (\mathbb N \times \mathbb N) \to \mathbb N,\) which is read “subtraction is a function from natural number-pairs to natural numbers.”

\(X\) is called the domain of \(f.\) \(Y\) is called the codomain of \(f\). We can visualize a function as a mapping between domain and codomain that takes every element of the domain to exactly one element of the codomain, as in the image below.

Talk about how they’re a pretty dang fundamental concept. Talk about how we can think of functions as mechanisms. Add pages on set theoretic and type theoretic formalizations. Talk about their relationships to programming. Talk about generalizations including partial functions, multifunctions, etc. Give some history, e.g. Church-Turing, Ackerman, recursion, etc. (Many of these todos should go into separate lenses; this definition here might be fine?)

# Examples

There is a function \(f : \mathbb{R} \to \mathbb{R}\) from the real numbers to the real numbers which sends every real number to its square; symbolically, we can write \(f(x) = x^2\).

(TODO)

Children:

- Operator
- Arity (of a function)
- Domain (of a function)
- concat (function)
- Binary function
- Codomain (of a function)
- Image (of a function)
- Range (of a function)
- Codomain vs image
- Function: Physical metaphor
- Ceiling
- Ackermann function
The slowest-growing fast-growing function.

- Bijective function
A bijective function is a function with an inverse.

- Injective function
- Surjective function
A surjective function is one which “hits everything in the codomain”.

- Inverse function
The inverse of a function returns an input of the original function when fed the original’s corresponding output.

- Exponential
Any function that constantly gets larger as a proportion of itself.

- Currying
Transforms a function of many arguments into a function into a function of a single argument

- Convex function
A function that only curves upward

- Partial function
A partial function is one which “might not be defined everywhere one might expect it to be”.

Parents:

- Mathematics
Mathematics is the study of numbers and other ideal objects that can be described by axioms.

Oog, I wrote a page about functions at /p/3vp because it didn’t occur to me that this page would be named differently…

Sorry :-p /p/3vp seemed too general a name for me back when I was first writing this, though I think /p/3vp is probably actually just fine. I suggest you merge the two and do what you want with them. (Right now I like my intro better than yours, but I might be biased :-p)