这个问题是针对那些熟悉Haskell (或任何其他支持高级类型的函数语言)和C++的人.
是否可以使用C++模板来建模更高类型的类型?如果是,那怎么做?
编辑:
来自托尼·莫里斯的这演示文稿:
高阶多态性:
List<A>可以有一个在任何元素类型( A)上工作的reverse函数。示例:
伪Java和一种高级多态表示法
interface Transformer<X, Y> {
Y transform(X x);
}
interface Monad<M> { // M :: * -> *
<A> M<A> pure(A a);
<A, B> M<B> bind(Transformer<A, M<B>> t, M<A> a);
}发布于 2010-04-02 05:41:56
通常情况下,一个普通的模板不是已经是一种高级类型了吗?例如,std::vector接受一个类型参数来创建一个实际的类型,比如std::vector<int>,所以它有类型的* -> *。
https://stackoverflow.com/questions/2565097
复制相似问题