元數
在邏輯、數學及電腦科學裏,函數或運算的元數是指所需的參數或運算元的數量。關係的元數則是指其對應之笛卡兒積的維度。
元數主要用在下面類型的函數之中: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