論理学、数学、コンピュータ科学において、アリティ(/ ˈærɪti /)ⓘ ) は、関数、演算、または関係によって取られる引数またはオペランドの数です。数学では、arity は rank とも呼ばれますが、 [ 1 ] [ 2 ]この単語には他にも多くの意味があります。論理学と哲学adicityやdegreeとも呼ばれます。 [ 3 ] [ 4 ]言語学ではvalencyと呼ばれます。 [ 5 ]
一般的に、引数の数(アリティ)が指定された関数や演算子は、 2進数や16進数などのnを基数とする数値体系の命名規則に従います。ラテン語の接頭辞と接尾辞-aryが組み合わされます。例:
定数は、ヌル項演算と呼ばれる、項数0の演算の出力として扱うことができます。
また、関数型プログラミングの枠を超えて、引数を持たない関数は意味を持ち、必ずしも定数であるとは限りません(副作用のため)。そのような関数は、グローバル変数やシステム全体の状態(時間、空きメモリなど)といった、何らかの隠れた入力を持つ場合があります。
数学やプログラミングにおける単項演算子の例としては、単項マイナスとプラス、 Cスタイルの言語におけるインクリメント演算子とデクリメント演算子(論理言語にはない)、数学における後継、階乗、逆数、床関数、天井関数、小数部、符号、絶対値、平方根(主平方根)、複素共役(「1」の複素数の単項演算子だが、より低い抽象度では2つの部分を持つ)、ノルム関数などが挙げられる。プログラミングにおいては、2の補数、アドレス参照、論理 NOT演算子が単項演算子の例である。
ラムダ計算および一部の関数型プログラミング言語(特にMLから派生したもの)におけるすべての関数は、技術的には単項関数ですが、下記のn項関数を参照してください。
クワインによれば、ラテン語の分配法則はsinguli、bini、terniなどであるため、「unary」ではなく「singulary」という形容詞が正しい。[ 6 ]アブラハム・ロビンソンはクワインの用法に従っている。[ 7 ]
哲学において、形容詞「単項的」は、「正方形の形をしている」のような一項関係を表す際に用いられることがあり、「~の姉妹である」のような二項関係を表す場合とは区別される。
プログラミングや数学でよく使われる演算子のほとんどは二進数です。プログラミングと数学の両方において、これには乗算演算子、基数演算子、しばしば省略されるべき乗演算子、対数演算子、加算演算子、除算演算子が含まれます。OR、XOR、AND、IMPなどの論理述語は、通常、2つの異なるオペランドを持つ二進数演算子として使用されます。CISCアーキテクチャでは、 2つのソースオペランド(そしてそのうちの1つに結果を格納する)を持つことが一般的です。
最新のCPUのほとんどは、浮動小数点数用の三項積和演算(FMA)命令を備えています。この命令は、2つの数値を乗算し、その結果を3つ目の数値に加算し、最後に一度だけ丸め処理を行います。これにより、乗算と加算を別々に丸めることで生じる誤差を回避できます。
コンピュータプログラミング言語Cとその派生言語 ( C++、C#、Java、Julia、Perlなど)は、三項条件演算子?:を提供します。最初のオペランド (条件) が評価され、それが真であれば、式全体の結果が 2 番目のオペランドの値となり、そうでなければ 3 番目のオペランドの値となります。この演算子は、2 番目と 3 番目の引数のうち使用されなかった方を評価しない、遅延評価または「ショートカット」評価戦略を採用しています。Agda などの一部の関数型プログラミング言語は、すべての関数に対してこのような評価戦略を採用しており、結果として をif...then...else通常の関数として実装しています。Haskell などの他のいくつかの言語は、これを行うことができますが、構文、パフォーマンス、または歴史的な理由から、代わりにキーワードを定義することを選択しています。
Python言語には三項条件式があります。Elixir では、これに相当するものは となります。xifCelseyif(C,do:x,else:y)
Forth言語には、最初の2つの(1セル)数値を乗算し、3番目の数値で除算する三項演算子も含まれており*/、中間結果は2セルの数値になります。これは、中間結果が1セルを超えてしまう場合に使用されます。
Unix dc 電卓に|は、スタックから 3 つの値をポップして効率的に計算するなどの三項演算子がいくつかあります。任意精度で。
多くの(RISC)アセンブリ言語命令は、3 進数(CISC で指定されている 2 つのオペランドのみとは対照的)またはそれ以上の命令であり、たとえば、レジスタBXとCXの合計(括弧)である計算されたメモリ位置の内容をレジスタAXにロード( MOV)します。MOV%AX,(%BX,%CX)
n個の実数の算術平均はn項関数である。
同様に、n個の正の実数の幾何平均はn項関数である。幾何平均の対数は、 n 個の引数の対数の算術平均であることに注意してください。
数学的な観点から言えば、n 個の引数を持つ関数は、常に何らかの積空間の要素である単一の引数の関数として考えることができます。ただし、表記上は、例えば多重線形写像( n ≠ 1の場合、積空間上の線形写像ではない)のようなn項関数を考える方が便利な場合があります。
プログラミング言語でも同じことが言えます。複数の引数を取る関数は、タプルなどの複合型の単一の引数を取る関数として定義することも、高階関数を持つ言語ではカリー化によって定義することもできます。
コンピュータ科学では、可変個の引数を受け入れる関数は可変引数関数と呼ばれます。論理学や哲学では、可変個の引数を受け入れる述語や関係は、多項式、単項式、または可変多項式と呼ばれます。[ 8 ]
ラテン語由来の名前は、特定の項数を表す際によく用いられ、主に「 n 個のグループ」を意味するラテン語の分配数に基づいています。ただし、ラテン語の基数や序数に基づくものもあります。例えば、1 項は、分配数であるsingulīから派生してsingularyになるのではなく、基数unusに基づいています。
n項とはn 個のオペランド(またはパラメータ)を持つことを意味しますが、しばしば「多項式」の同義語として使用されます。
これらの言葉は、その数字に関連するあらゆるものを説明するためによく使われます(例えば、11×11の盤面を持つチェスの変種であるウンデナリーチェスや、1603年のミレニアリー請願など)。
関係(または述語)のアリティは、対応するデカルト積におけるドメインの次元である。(したがって、アリティnの演算は、関係として考えるとアリティn + 1 を持つ。)「n 項演算は (n+1) 項関係の特殊な場合であるため、代数は関係構造の特殊な場合とみなすことができる。」[ 9 ]
コンピュータプログラミングでは、演算子と関数は構文的に区別されることがよくあります。構文演算子は通常、引数の数が1、2、または3です(三項演算子?:もよく使われます)。関数は引数の数が大きく異なりますが、引数の数が多いと扱いにくくなる場合があります。一部のプログラミング言語では、可変引数関数、つまり構文的に引数の数を可変できる関数もサポートしています。
オンラインで無料で入手できるモノグラフ: