为什么 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可能是相关的:
目前,没有计划将递归类型重新引入 ATS。
根据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可能是相关的:
目前,没有计划将递归类型重新引入 ATS。