expression templateってモナドだよね。

特にIOモナドとか、boost uBLASのexpression template技法そのまんまという気がする。boost spiritも近いかな。expression templateもまた、コンパイル時に「どうやって計算するか」を値として、実行時はその値を利用する訳で。

C++ templateによるメタプログラミングを言語内言語と捉えれば、その副作用を持つのが難しいという性質から、思想こそ圏論でなくモナド律を前面に押しだしこそしていないけれど、似たようなものが見られるのは必然なのかもしれない。