# Do functions really always take only one argument?

I am used to $f(x_{1},x_{2})$ or $f(x_{1})$ (and to say this function takes one, two etc arguments). But the more I think about it from a set-theoretic or linear-algebra point of view there is really just a single n-dimensional vector or tuple $\mathbf{x}$, which is our $\mathbf{x} = (x_{1},x_{2},...)$ input. So functions always have one input argument (be it univariate, bivariate or multivariate). Is this correct or gibberish?

• Yes it is correct. A function acting on multiple arguments is really acting on the cartesian product of the domains of the arguments. – John Griffin Aug 15 '17 at 16:09
• Essentially yes. A function always maps from a domain, and it will take one element from that set to map from. You can 'rewrite' any function so that it 'takes one argument' – Shuri2060 Aug 15 '17 at 16:09
• I guess this is the reason why map in functional programming accepts only "one argument", which can be a tuple, but not several disparate ones. – A.L. Verminburger Aug 15 '17 at 16:12
• Another way to perform this reduction is via currying. – PM 2Ring Aug 15 '17 at 16:22
• Just my two cents, it's not gibberish, but it is philosophical and/or academic. – Mr. Brooks Aug 15 '17 at 22:24

## 3 Answers

Correct, once you keep in mind that $f(x_1,\ldots,x_n)$ is a shorthand for $f ((x_1,\ldots,x_n))$, etc..

Yes, they do. But remember that maps like these $(x_1,x_2)\mapsto y$ (that so can be considered as being $x\mapsto y$) have a domain with an implicit structure: it will always be possible to say, given any point of it, what is the first component and so the "first argument" of the map, the second and so on. Otherwise it will make no sense a map like this $x\mapsto y,~y=\frac{x_1}{x_2}$

A function is defined as a mapping from a domain to a codomain. Thus if we want to make a mapping that depends on multiple arguments, say $a_1$ whose domain is $A_1$, $a_2$ whose domain is $a_2$, etc..., and outputs a value in some set $B$, then we define a function $f$ from the product $\prod_{i\in I}A_i$ into the set $B$ which takes the arguments $(a_i)_{i\in I}$ and sends them to a value in $B$, denoted by $f((a_i)_{i\in I})$. If $I$ is finite then we simply write $f((a_i)_{i\in I})$ as $f(a_1,\ldots,a_n)$. However $I$ could be infinite or even uncountable.