Conversation

StackOverflow has a bunch of nonsense about inductive types allowing for dependency while ADTs do not, but that's not a property of inductive types, that's a property of the particular languages they exist within
1
4
I conclude that ADTs are inductive types in other type systems but the communities gave them different names for weird reasons. ADTs in practice come with limited recursors but that also isn't fundamental
3
7
i think "ADT" roughly means "you can define types by A = p(A) for p a polynomial" with some variation on what p can look like, whereas "inductive type" means "you can define types with an inductive universal property"
2
Are there any ADTs that cannot be defined as inductive types? I'd guess not? If you make the sums and products dependent, do you get something as expressive as inductive types & families, or not?
2
1
i think usually when people say "ADT", they specifically mean *non-dependent* sums and products—or at least that's what the term connotes to me
3
2
Hopping in to say ^ "ADT" to me means something that's expressible as a tagged union, optionally with type variables I wouldn't call a Buffer an ADT, even though it's a product of a length and a vector, but I would call a nondependent pair an ADT.
1
2