为什么 ATS 不支持递归类型?

Why doesn't ATS support recursive types?

根据this answer,ATS "used to support"递归类型。删除此功能的理由是什么?此外,未来是否有重新引入它的计划? TIA.

直接支持递归类型会使检查类型相等性变得更加复杂,即判断两个类型是否相等。此外,对递归类型的最典型需求可以通过使用数据类型来满足。另外,可以介绍一下:

abstype fix_t(f: type -> type)

prfun fold{f:type->type}(x: !f(fix_t(f)) >> fix_t(f)): void
prfun unfold{f:type->type}(x: !fix_t(f) >> f(fix_t(f))): void

以下link可能是相关的:

https://groups.google.com/forum/#!msg/ats-lang-users/tfEnAR2vIOA/aqYgEwaGBAAJ;context-place=forum/ats-lang-users

目前,没有计划将递归类型重新引入 ATS。