Conversation

Reminder: the way to remember the difference between sum and product types is to count the number of possible values. enum { A(int), B(int) } is a sum type because there are INT_MAX+INT_MAX possible values. (int, int) is a product type because there are INT_MAX*INT_MAX values.
6
116
(I don't love the theoretical PL terminology because "tagged union" and "tuple" are much clearer, but there you go.) (Also yes, I'm aware that INT_MAX doesn't take the negative integers into account, but you get the idea)
3
39