【发布时间】:2025-12-05 14:20:04
【问题描述】:
此问题适用于同时了解 Haskell(或任何其他支持高级类型类型的函数式语言)和 C++ 的人...
是否可以使用 C++ 模板对更高种类的类型进行建模?如果是,那么如何?
编辑:
来自 Tony Morris 的 this 演讲:
高阶多态性:
Java 和 C# 等语言都有 一阶多态性,因为它们 允许我们对类型进行抽象。例如
List<A>可以有一个reverse函数 适用于任何元素类型(A)。更实用的编程语言 类型系统允许我们 类型构造函数的抽象为 好吧。
此功能称为高阶 (或更高种类的)多态性。
示例:
具有高阶多态性的发明符号的伪 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);
}
【问题讨论】:
-
也许你可以举个例子来说明你的目标。对于我们不知道功能性习语-非常好的类型会有所帮助。
-
@GMan:我可以举个例子,但我很清楚,除了已经知道它的人之外,它几乎没有任何意义。所以我没有费心举个例子。
-
@Venkat:我的意思是一个目标,你的大局是什么?你想要一个更高级的类型:__________。此外,一个非常简单的 cmets 示例仍然比没有好。 :)
-
我认为总体目标仍然对每个人都非常有帮助。
-
@Venkat:非常感谢。现在我明白了……哦,等等,已经回答了。 :)
标签: c++ templates haskell higher-kinded-types