元数
在逻辑、数学及计算机科学里,函数或运算的元数是指所需的参数或算子的数量。关系的元数则是指其对应之笛卡儿积的维度。
元数主要用在下面类型的函数之中:f : V → S,其中的V ⊂ Sn,且S是某个集合。此类函数通常称为在S上的“运算”,且称n是这个运算的元数。
例子
“元数”一词其实在一般情况之下并不怎么常使用。例如,与其说“加法运算的元数是2”或“加法是个元数2的运算”,更多人会说“加法是个二元运算”。
0元
有时,将一个常数视为一个0元运算或0元函数是很有用的。
而且,在非函数编程语言里,一个没有参数的函数可以是有意义的,且不必然是个常数(因为有副作用)。通常,此类函数实际上会有个“隐藏输入”,可能是个全局变数,包含整个系统的状态(时间、未使用记忆体、…)。后者是个很重要的例子,即使在“纯”函数编程语言里也有其存在。
一元
在数学和编程语言中,一元运算的例子包括正负值、C语言之类编程语言中的递增和递减运算子,以及数学中的阶乘、倒数、高斯符号、绝对值、共轭复数和范数。
所有在λ演算中的函数,以及部分函数编程语言(尤其是那些衍生自ML语言的编程语言)中的函数,在技术上都是一元的(见柯里化)。
二元
大部分在编程语言中出现的运算子多是二元运算的形式。在编程语言及数学里,这些二元运算可以是乘法、加法及除法。“或”、“异或”、“且”、“蕴涵”等逻辑联结词一般也被当做二元运算子使用。
三元
在C语言、C++、C#、Java、Perl等各种编程语言中,都会有个三元运算子“?:
”,称为条件运算符。Forth中也有一个三元运算子“*/
”。这个运算子会将前两个数字相乘,然后再除以第三个数字,中介的乘积结果会以两倍的位元储存,以防中介的结果溢位。dc中也有一些三元运算子,如“|”,会从堆叠中弹出三个值来,且以随意的精确度有效地计算出 来。另外,许多组合语言的指令为三元或更多元,如“MOV %AX, (%BX,%CX)”,会将暂存器BX和CX的和所指的记忆体位址中的内容载入(MOV)暂存器AX之中。
n元
从数学的角度来看,有n个参数的函数总是可以想成是有1个参数的函数,其参数为某个积空间的元素。不过,在标记上,当做是n元函数会比较简单,如多重线性映射(此映射在n≠1时不是积空间上的线性映射)。
参考资料
- Quine, W. V. O., Mathematical logic, Cambridge, MA: Harvard University Press, 1940