在C ++中是否存在Damas-Hindley-Milner样式类型推断的实现,最好使用现代C ++技术?
答案 0 :(得分:13)
以下为my implementation of Hindley-Milner type inference in C++11,基于Python code by Robert Smallshire,Scala code by Andrew Forrest,Nikita Borisov的Perl代码和paper "Basic Polymorphic Typechecking" by Cardelli。
大量使用boost::variant
和boost::apply_visitor
。
答案 1 :(得分:1)
我怀疑你没有多少运气;写这些东西的功能人员通常不会用C ++来做!您可以使用的大多数编译器都用于编译自己(例如,用于OCaml或GHC)。
所以,如果有人确实将欣德利 - 米尔纳作为一个玩具项目,它可能不在网上;如果它是编译器的一部分,那么它不太可能是在C ++中。
可能出现的事情:
答案 2 :(得分:0)
我们在这里有一个类型推理引擎(https://github.com/ltcmelo/psychec)。我们的方法是在Pottier和Remy的HM(X)算法之后实现的,具有适当的约束生成和类型推断的单独阶段。约束生成是在C ++中实现的,但是类型解析是在Haskell中实现的(抱歉!)。该算法推断出C程序的类型,以重建部分可用的代码。该工具可在线获取:http://cuda.dcc.ufmg.br/psyche-c/。您输入C程序的一部分,它会生成足以编译它的类型声明。
此致
费尔南多