関数は、多くの異なる状態に有効な式を カプセル化したものです。関数は、実パラメーターへの適用時に実行されます。 関数適用の一般的な構文では、関数名の後に式が示されます。 例として、all ("Class") や class current などがあります。関数は Q 言語の一部であり、 新規の関数を定義する方法はありません。
すべての関数は単一のパラメーターを取得します。 複数のパラメーターを取得しているように見える関数は、実際には、 複数のパラメーターを含む単一のタプルを取得しています。 すべての関数は単一のパラメーターを取得するため、パラメーターを括弧で囲む必要はありません。 代わりに、名前の後の最小式はパラメーターと見なされます。「最小」式を取得する際のこの規則は、 大きな式をパラメーターとして示すためには括弧が必要となる場合があることを意味します。
関数について、次の他の 2 つの観点にも注意する必要があります。 第 1 に、関数適用の優先順位は最も高いということです。したがって、 複合式では、関数適用は通常 + and などの演算子よりも先に評価されます。第 2 に、関数適用は右側に関連します。
これらの点を説明するために、2 つの関数 inc と dec について 考えてみます (これらの関数は Q 言語の一部ではありません。これらは単なる例として使用します)。 関数 inc は整数を取得し、その整数に 1 の値を付加したものを返します。 関数 neg は整数を取得し、その整数の負数を返します。 以下の例で、≡ 記号は、同等のもの (ただし式によっては全体的に括弧に入れられている場合あり) を示すために使用します。
inc 5 ≡ inc (5) ⇒ 6 neg 5 + 3 ≡ (neg (5)) + 3 ⇒ -2 neg (5 + 3) ⇒ -8 neg 5 + inc 3 ≡ (neg (5)) + (inc (3)) ⇒ -1 neg (5 + inc 3) ⇒ -9 neg inc 3 ≡ neg (inc (3)) ⇒ -4 neg inc 3 + 1 ≡ (neg (inc 3)) + 1 ⇒ -3 neg neg neg neg 3 ≡ neg (neg (neg (neg (3)))) ⇒ 3