カテゴリー抽象マシン(CAM)は、アプリケーション、関数型、または構成型のスタイル機能を保持するプログラムの計算モデルです[ 1 ] 。これはアプリケーションコンピューティングの技術に基づいています。
カテゴリー抽象マシンの概念は1980年代半ばに登場しました。コンピュータサイエンスにおいて、プログラマのための計算理論の一種として確立され、デカルト閉圏で表現され、組み合わせ論理に組み込まれています。CAMは、関数型プログラミング言語のための、明快で健全な数学的表現です。計算理論の等式形式を用いることで、マシンコードを最適化できます。CAMを用いることで、再帰や遅延評価といった様々な計算メカニズム、さらには名前渡しや値渡しなどのパラメータ渡しをエミュレートできます。理論的には、CAMはプログラミングや計算におけるオブジェクト指向アプローチのあらゆる利点を維持しています。
現在主流となっている実装はOCamlであり、これはカテゴリカル抽象機械語であるCamlにクラス継承と動的メソッドディスパッチを追加したものである。どちらもMetaLanguage MLの派生言語であり、これら3つの言語はすべて型推論を実装している。
関数型言語の実装アプローチの一つとして、D. Turnerによるスーパーコンビネータに基づく機械、すなわちSKマシンが挙げられる。CAMの概念は、これとは異なるアプローチを提供する。CAMの構造は、構文、意味、計算の構成要素から成り立っている。構文は、束縛変数の使用に伴う困難を克服するde Bruijnの記法に基づいている。評価は、P. LandinのSECDマシンの評価と類似している。このように、CAMは構文、意味、計算理論のための確固たる基盤を提供する。この理解は、関数型プログラミングのスタイルに影響を受けたものと言える。