用C++实现的类型推断

kev*_*man 12 c++ type-inference hindley-milner

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

Jar*_*ock 13

这是我在C++ 11中实现的Hindley-Milner类型推理,基于Robert SmallshirePython 代码,Andrew ForrestScala代码,Nikita Borisov的Perl代码和Cardelli文章"Basic Polymorphic Typechecking".

它大量使用boost::variantboost::apply_visitor.


Nic*_*son 1

我怀疑你不会有太多运气;写这些东西的函数式开发者一般不会用 C++ 来写!您可以使用的大多数编译器都用于编译自身(例如 OCaml 或 GHC)。

因此,如果有人确实将 Hindley-Milner 作为一个玩具项目,它可能不会出现在网上;如果它是编译器的一部分,那么它不太可能在 C++ 中。

可能想到的事情:

  • Haskell 的拥抱是 C 语言;那里会有一些 C 源代码可以做你想做的事情,而 Haskell 是一个很好熟悉的糖。但不是你想要的 C++。
  • 我对 F# 一无所知,但我认为那是 HM,如果有人用现代技术用 C++ 编写了一个胖函数编译器,那可能就是 MS。但显然是闭源的。