関数を扱えるだけでは、モナドを表現するには不十分過ぎる - xuwei-k's blogを見て、言語の型システムの表現力とその限界とはなんなんだろうということをモヤモヤと考えていた。 ここで話題になっているのは型変数を持つ型変数という話題である。これを便宜的に高階型変数とか、高階型と表現している。Javaのジェネリクスで例えれば public class Foo<T<X>> {} といったように型変数Xを持つ型変数Tという表現の話しである。Javaの言語機能的にはコレはできない。 以前、僕の書いたJavaによる高階型変数の実装 - プログラマーの脳みそではこの出来ないはずの高階型変数をJavaの言語機能で実現するにはどうしたらいいかという工学よりの話題で、型理論のような理論よりの話題としてはどう評価するべきなのかちょっとよくわからない。 Higher-kind Generics Scala