一般的には:
さらに一般的には:
(n, m)-コンビネータは、(n, m-1)-コンビネータの集合を対象とする圏になる。特に、(0, 1)-コンビネータ=コンビネータは、(0, 0)-コンビネータ=コンストラクタの集合を対象とする圏になる。
コンビネータを受け取ってコンビネータを返す関数を汎コンビネータまたはメタコンビネータ〈meta-combinator〉と呼ぶ。
基本コンビネータと基本汎コンビネータにより、ユーザー定義コンビネータを作る行為をコンビネータ・プログラミングと呼ぶ。コンビネータの域コンストラクタと余域コンストラクタの組をプロファイルと呼ぶ。
- 縦結合 (;) = Seq
- 直積 (×) = Prod
- ペア <_, -> = Pair
- Pair(c, d) = Prod(c, d)Dup
など、汎汎コンビネータは、
- 縦結合 SEQ
- 直積 PROD
- ペア PAIR
これを使うと:
- Pair = SEQ(Dup, SEQ(Pair, Prod))
無限タワーになる。
それはともかく:
汎コンビネータであって、コンビネータの圏から別のコンビネータの圏への関手になっているものをコンビネータ変換子と呼ぶ。コンビネータ変換子は、Φ, Ψ, Ξ などのギリシャ文字大文字で表す。
計算論の背景圏はコンビネータ付きの圏である。異なる背景圏は異なるコンビネータ・レパートリーを持っている。コンビネータ変換子で、背景圏のあいだを繋ぐ。