【问题标题】:Would Hindley Milner type inference be useful to PyPy for RPython?Hindley Milner 类型推断对 PyPy for RPython 有用吗?
【发布时间】:2012-11-24 00:54:32
【问题描述】:

PyPy 是否在编译时进行静态类型检查以在编译时捕获类型错误?如果不是,像 HM 类型推断这样的东西是否有助于在编译时捕获这些错误?

【问题讨论】:

    标签: pypy rpython hindley-milner


    【解决方案1】:

    否两个帐户。 (我假设 PyPy 是指具有 JIT 编译器和其他功能的 Python 解释器。)它不会随时对 Python 代码进行静态类型检查,因为它实现了 Python 语言,而不是静态类型的 Python语言。事实是,您*无法静态检测 Python 程序中的所有类型错误(对于大多数“类型错误”的定义)。您可以尝试找到一些,但即使 if 您可以证明在运行时会发生类型错误,您也不能拒绝执行程序,因为它完全有效(有时很有用)运行从其他地方获取该代码并捕获异常。

    顺便说一下,Damas-Hindley-Milner 推断类型的类型系统甚至不足以表达 Python 程序中“类型”的有用子集(并不是说大多数流行的静态类型系统更好) .例如,尝试输入zip(提示:Haskell 没有它,它有几个专用于 2、3、4 个参数的函数)。或者,如果您想要更难的东西,getattr。然后是整个名义和结构子类型。

    已经尝试在 Python 和类似语言中推断类型,但这些方法必然与函数式编程世界在该领域所做的完全不同(见上文)。此外,这些项目永远不会在 Python 程序中发现 all 类型错误(尽管有些项目已经涵盖了大大简化的子集,或者在 Python 程序中检测到 some 错误) .做一些研究(Lambda the Ultimate 有很多链接)。

    现在,“PyPy”这个名称在历史上也用于RPython translation toolchain,除其他外,它确实可以推断 RPython 程序的静态类型。但是 RPython 不是 Python(它有很多很多的限制,以至于它实际上是一种不同的语言),类型系统和类型推断与 DHM 完全不同(整个程序,基于抽象解释,完全不同的类型系统)。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 2013-03-07
      • 2014-03-30
      • 1970-01-01
      • 2014-07-22
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多