Согласно this answer, ATS «используется для поддержки» рекурсивных типов. Что послужило основанием для удаления этой функции? Кроме того, есть планы по его повторному внедрению в будущем? ТИА.Почему ATS не поддерживает рекурсивные типы?
1
A
ответ
1
Поддерживая рекурсивные типы напрямую, он будет намного более привлекательным для проверки равенства типов, то есть для определения того, являются ли два типа равными. Кроме того, наиболее типичная потребность в рекурсивных типах может быть выполнена с использованием типов данных. Кроме того, можно ввести что-то вроде:
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
Следующая ссылка может быть полезной:
В настоящее время не существует никакого плана, чтобы повторно ввести рекурсивные типы обратно в ОВД.