到目前为止,我认为SML是简单类型lambda演算的一种方便实现。学习什么是简单类型的lambda演算是,我知道它不能类型检查递归函数。
我了解到存在简单类型lambda演算的概括,名为SystemF.SystemF是多态的,具有函数返回类型,这可能会以某种方式考虑SML的函子,但SystemF(根据我的东西)已读过),无法对无限递归进行类型检查,而这可以通过SML轻松实现:
fun r x: int = (r x): int (* Type‑checks *)
val y = r 0 (* Infinite loop *)
因此,如果SML的类型系统既不是简单的类型系统也不是SystemF,它是什么(正式)?或者我错了,这是两者之一?