是否有C ++中的实现 达马斯-辛德米尔纳 样式类型推断,最好使用现代C ++技术?
是否有C ++中的实现 达马斯-辛德米尔纳 样式类型推断,最好使用现代C ++技术?
这里的 我在C ++ 11中实现了Hindley-Milner类推理,基于 Robert Smallshire的Python代码, 斯科拉代码由安德鲁福雷斯特,尼基塔·鲍里索夫的Perl代码和 论Cardelli的“基本多态Typechecking”。
它大量使用 boost::variant
和 boost::apply_visitor
。
我怀疑你不会有太多运气;编写这些东西的功能人员通常不会在C ++中这样做!您可以使用的大多数编译器都用于编译自己(例如,用于OCaml或GHC)。
所以,如果有人确实将欣德利 - 米尔纳作为一个玩具项目,它可能不在网上;如果它是编译器的一部分,那么它不太可能是在C ++中。
想到的可能事情:
我们这里有一个类型推理引擎(https://github.com/ltcmelo/psychec)。我们的方法是在Pottier和Remy的HM(X)算法之后实现的,具有适当的约束生成和类型推断的单独阶段。约束生成在C ++中实现,但类型解析在Haskell中实现(抱歉!)。该算法推断出C程序的类型,以重建部分可用的代码。该工具可在线获取: http://cuda.dcc.ufmg.br/psyche-c/。您输入C程序的一部分,并生成足以编译它的类型声明。
问候,
费尔南多