コンビネータとは?
こんびねーた
コンビネータとは、自由変数を持たない純粋な関数であり、引数の組み合わせだけで複雑な計算を構築するプログラミング・論理学の概念です。
コンビネータ(Combinator)は、もともとコンビネータ論理(Combinatory Logic)という論理体系で定義された概念で、自由変数を含まない——すなわち外部の値に依存しない——関数を指します。関数型プログラミングの文脈では、他の関数を受け取って新しい関数を返す高階関数のうち、特に自己完結した部品として使えるものをコンビネータと呼ぶことが一般的です。
コンビネータ論理の基礎を成す代表的なコンビネータには以下があります。
- Sコンビネータ:S x y z = x z (y z) と定義され、引数の適用を分配します
- Kコンビネータ:K x y = x と定義され、最初の引数を返して二番目を捨てます
- Iコンビネータ:I x = x と定義される恒等関数で、SとKから導出できます
実用的なプログラミングでは、パーサーコンビネータやプロミスチェーン、関数合成演算子など、小さな関数を組み合わせて大きな処理を構築するパターンに「コンビネータスタイル」という言葉が使われます。Haskell・OCaml・Scala・Rustなどの関数型言語で特に多用されます。
コンビネータの概念はチューリング完全な計算をラムダ計算と等価な形で表現できることが証明されており、プログラム意味論や型理論の基礎としても重要な位置を占めています。
使い方・例文
Haskellでパーサーコンビネータライブラリを使うと、「数字の後にコロン、その後に文字列」といった文法規則を、小さなパーサーを組み合わせる形で宣言的に記述できます。
この用語をシェア
最終更新: