クライスリ圏
例えば、program1 :: A → T B と program2 :: B → T C が与えられたとき、その合成を行おうと思っても、型 B というデータの型としての共通性はあっても計算概念の分だけ型に違いがあるため、実際にプログラムの合成を行うことはできない。
program2 :: B → T C × program1 :: A → T B (合成不可)
この致命的な問題点を解消するために導入されるのがクライスリトリプル(Kleisli triple)である。 直感的な記法となるが、クライスリトリプル(T,η, _)が与えられれば、「_」演算子の機能からprogram2 :: T B → T C となり
program2 . program1 :: A → T C (合成可能)
という形でプログラムの合成が可能となる。おおよそこのような理由からモッジはプログラムはクライスリ圏をなすとした。