2021-09-22
|~2 min read
|359 words
The domain of a function is the set of inputs for which a function is defined.
The range of a function is the set of values that are mapped to the function’s domain.
Total functions have a few attributes related to domains and ranges:
Let’s look at some examples:
const add = (x: number, y: number): number => x + y
The add
function’s domain is all numbers and that maps to a range which includes all numbers.
This variation of add is total.
On the other hand, we could have addSome
:
const addSome = (x: 1 | 2 | 3, y: 1 | 2 | 3): 2 | 3 | 4 | 5 | 6 => x + y
This is also a total function. Every member of the domain maps to a value in the range. It could also be written as:
const addSome = (x: 1 | 2 | 3, y: 1 | 2 | 3): number => x + y
But what about:
const addSome = (x: number, y: number): number => {
if (1 <= x && x <= 3) {
return x + y
}
}
This is partial because the domain is any number, but there are values within the domain for which there’s no return value.
The other attribute of a total function is that the domain maps to a unique value in the range.
This means that every time you use a set of inputs, you get the same output.
In other words, this won’t qualify as a function:
const random = (x: number): number => (Math.random() ? 1 : 2)
This is not meant to be an exhaustive review of domains, ranges, and set theory, but a primer. Hopefully it helps clarify some ideas!
If you’d like more, MathIsFun.com has a good write up on Domains, Ranges, and Codomains which is worth a look.
Hi there and thanks for reading! My name's Stephen. I live in Chicago with my wife, Kate, and dog, Finn. Want more? See about and get in touch!