Latent类型和Manifest类型有什么区别?

时间:2009-12-19 01:38:38

标签: scheme type-systems

有人能给我一个明确的潜在类型和明显类型系统的区别吗?

4 个答案:

答案 0 :(得分:9)

有时,相同的概念是在计算机科学的不同领域独立发明的。这是其中一个场合。 Scheme社区调用潜在清单键入的内容,世界其他地方调用隐式显式键入。含义完全相同:

显式 / 清单输入中,程序员必须显式记下类型,因此类型变为 manifest 在源代码中。

隐式 / 潜在输入中,程序员不会记下这些类型。因此,类型是隐式潜在

请注意,隐式与显式输入的问题完全正交于例如动态与静态打字,强打字与弱打字,声音与不健全打字,安全与不安全打字以及名义与结构与鸭子打字。

例如,Haskell是隐式,强烈,静态,声音,安全,结构类型。

答案 1 :(得分:5)

请参阅Lambda the Ultimate上的Anton van Straaten's post。它描述了Scheme的上下文中的潜在类型。

清单类型将用于静态类型语言,其中术语的类型在语法上声明,或者可以在编译时从其他此类术语推断出来。

答案 2 :(得分:2)

潜在类型:一种不需要显式类型声明的打字样式。它与duck typingdynamic typingtype inference相关联。你可以用Python,Lisp,Haskell等语言看到这些。

Manifest typing:显式标识所有声明的变量的类型。 C,C ++和Java等语言遵循这一点。

答案 3 :(得分:1)

很难回答你的问题的部分原因是这是一个活跃的研究领域。特别是,有很多人希望能够混合使用类型和非类型语言,并允许某些部分被打字并且某些部分不被打字的程序。

我声称,对于“潜在类型”一词最终会附加什么含义尚未得到广泛认同。

但是,潜在类型和清单类型的问题与类型推断的问题不同。

类型推断,在静态类型语言中,是指可以在没有程序员帮助的情况下推导出程序​​术语类型的系统,通常使用hindley-milner风格的类型系统和统一。 Haskell和OCaml都有类型推断。