【问题标题】:Which property of Scala's type-system make it Turing-complete? [closed]Scala 类型系统的哪个属性使其具有图灵完备性? [关闭]
【发布时间】:2012-01-19 19:58:36
【问题描述】:

Scala 使用基于 System F ω 的类型系统,通常被认为是强规范化的。强归一化意味着非图灵完备性。

尽管如此,Scala 的类型系统是图灵完备的。

与正式算法和系统相比,哪些更改/添加/修改使 Scala 的类型系统图灵完备?

【问题讨论】:

标签: scala types language-design type-systems turing-complete


【解决方案1】:

这不是一个全面的答案,但原因是您可以定义递归类型。

我以前曾问过类似的问题 (about what a non-Turing complete language might look like)。答案是这样的:图灵完备的语言必须支持任意循环或递归。 Scala的类型系统支持后者

【讨论】:

  • 递归类型存在于大多数语言中,包括 Java 和 Pascal。任何引用自身的类型(如链表)都是递归的。您需要一种在类型级别执行计算的方法,例如类型应用程序。在 Scala 中,类型别名中有类型成员和部分类型应用程序。
  • 我指的是 peano 编码意义上的递归类型:apocalisp.wordpress.com/2010/06/08/… 使用 type,而不是 classtrait。考虑到上下文,我认为这是相当明显的。就像我说的,我在此呼应,我被告知的关于图灵完整性的内容。
  • Recursive types 可用于像您说的那样对数字进行编码,但它们不足以实现图灵完整性。您想要的是一种计算方式,在这种情况下使用类型应用程序(反过来使用替换)。 Scala 的类型成员使它变得有些简单,尽管 Java 对泛型执行了类似的替换。
猜你喜欢
  • 1970-01-01
  • 2011-05-02
  • 2012-12-05
  • 2011-06-21
  • 2012-05-23
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多