CPL (正式名称:Categorical Programming Language) は圏論に基づいたデータ型の定義と計算モデルを持つ関数型プログラミング言語であり、1987年、萩野達也によって発案された。圏論の計算機科学に対する応用の黎明期に生まれた言語である。 元々定義されているデータ型が存在せず、何らかの関手の始双代数あるいは終双代数としてデータ型を定義する。プログラムあるいは関数[要曖昧さ回避]は射として、ポイントフリーの形式で記述する。関数の表し方としては射として表すものと冪対象として表すものの二通りがある。元々定義されている関数は恒等関数のみであり、元々定義されている制御構造は関数合成のみである。条件分岐や帰納法などはデータ型の定義に付随して定義される。