用C ++实现的类型推断

时间:2012-01-08 02:10:35

标签: c++ type-inference hindley-milner

在C ++中是否存在Damas-Hindley-Milner样式类型推断的实现,最好使用现代C ++技术?

3 个答案:

答案 0 :(得分:13)

答案 1 :(得分:1)

我怀疑你没有多少运气;写这些东西的功能人员通常不会用C ++来做!您可以使用的大多数编译器都用于编译自己(例如,用于OCaml或GHC)。

所以,如果有人确实将欣德利 - 米尔纳作为一个玩具项目,它可能不在网上;如果它是编译器的一部分,那么它不太可能是在C ++中。

可能出现的事情:

    Haskell的
  • Hugs在C中;那里会有一些C源可以做你想做的事情,Haskell是一个很熟悉的糖。不过你想要的C ++。
  • 我对F#一无所知,但我认为这是HM,如果有人用C ++编写了一个带有现代技术的胖函数编译器,它可能就是MS。显然是封闭的来源。

答案 2 :(得分:0)

我们在这里有一个类型推理引擎(https://github.com/ltcmelo/psychec)。我们的方法是在Pottier和Remy的HM(X)算法之后实现的,具有适当的约束生成和类型推断的单独阶段。约束生成是在C ++中实现的,但是类型解析是在Haskell中实现的(抱歉!)。该算法推断出C程序的类型,以重建部分可用的代码。该工具可在线获取:http://cuda.dcc.ufmg.br/psyche-c/。您输入C程序的一部分,它会生成足以编译它的类型声明。

此致

费尔南多