【发布时间】:2016-04-07 02:28:21
【问题描述】:
在英文语义中,“类型推导”是否等于“类型推断”?
我不确定
- 这只是不同语言设计者选择的惯用语偏好,或者
- 计算机科学给出了严格的“类型推导”定义, 哪个不是“类型推断”?
谢谢。
【问题讨论】:
标签: c++ haskell types type-inference
在英文语义中,“类型推导”是否等于“类型推断”?
我不确定
谢谢。
【问题讨论】:
标签: c++ haskell types type-inference
C++ 规范和工作草案广泛使用“类型推断”来引用没有类型声明作为引用的表达式类型;例如 this working draft on concepts 在谈论 auto 声明的变量时使用它,我记得很多书在谈论模板时使用它,当我不得不学习 - 然后忘记大部分 - C++ 时。然而,Type inference 有自己的维基百科页面,也是编程语言理论中一个重要研究领域的名称。如果说类型推断,人们会立即想到现代类型化的函数式编程语言。您甚至可以将其用作比较语言的标尺;有些人可能会说他们的语言 X 或他们的库 Y 更容易进行类型推理,因此更好或更友好。
我会说类型推断是更具体、更精确和更广泛使用的术语。类型推断作为一个短语可能只在 C++ 社区中享有盛誉。这些术语是近亲,但它们所使用的上下文赋予了它们不同的颜色阴影。
【讨论】:
如前所述,类型推断在理论上已经研究了多年。这也是几种编程语言提供的共同特性,不仅是 Haskell。
另一方面,类型推导是C++规范中定义的几个过程的总称,包括返回类型推导、占位符类型推导,以及它们的由来、模板(类型)参数推导。它即将识别一个术语隐含的类型(在 C++ simple-type-specifier 或 template-argument 中),但尚未推断出类型。它类似于类型推断,是关于typing -- 确定术语的类型,但受到更多限制。
主要区别在于:
如果不对 C++ 的类型系统进行大规模重新设计,这些限制可能不会改变,因此它们可能是必不可少的。
【讨论】: