Types SML&x27的正式名称是什么;s型系统?

Types SML&x27的正式名称是什么;s型系统?,types,computer-science,sml,Types,Computer Science,Sml,直到现在,我还认为SML是简单类型lambda演算的一个方便实现。通过学习简单类型的lambda演算,我了解到它不能对递归函数进行类型检查 我了解到存在一种简单类型的lambda演算的推广,名为System F.系统 F是多态的,具有函数返回类型,这可能会在某种程度上考虑SML的函子,但系统 F(根据我读到的内容),不能进行类型检查无限递归,而这可以通过SML轻松实现: fun r x: int = (r x): int (* Type‑checks *) val y = r 0

直到现在,我还认为SML是简单类型lambda演算的一个方便实现。通过学习简单类型的lambda演算,我了解到它不能对递归函数进行类型检查

我了解到存在一种简单类型的lambda演算的推广,名为System F.系统 F是多态的,具有函数返回类型,这可能会在某种程度上考虑SML的函子,但系统 F(根据我读到的内容),不能进行类型检查无限递归,而这可以通过SML轻松实现:

fun r x: int = (r x): int   (* Type‑checks *)
val y = r 0                 (* Infinite loop *)

因此,如果SML的类型系统既不是简单类型系统,也不是简单类型系统 F、 它(正式)是什么?或者我错了,这是两者中的一个?

我相信这是一个类型系统。

似乎是一个很好的匹配,至少得到了以下来源的证实:。它说“SML中使用的类型系统称为Hindley-Milner类型系统”。这个也是: [TeX]。它说:“包括Haskell 98和SML在内的许多类型化函数式编程语言都基于Hindley-Milner类型系统 […]”。可能是一个扩展。这一条:,说:“与标准ML和OCaml一样,Haskell使用了Hindley-Milner风格类型推断的扩展 […]”. 它表示扩展,表示类型推断,而不是类型系统。(仍在根据您的提示进行调查)。根据Hindley Milner类型系统(和类型推断),是系统的一个限制 F、 而前者更受青睐,因为类型推断适用于整个系统 F是不可判定的(类型不能是隐式的,需要是显式的,带有系统 F) 还有,这可能是你要问的下一个问题。对于OCaml来说,这并不重要;答案是一样的。