Reading this I'm a bit confused but think I understand what is meant by a product or tuple type constructor such as 

data Point a b = Pt a b

Because Point has no "logical or," (|) of more than one possible value set such as

data Color = Red | Green | Blue

 it is automatically a tuple type? Also, it has no possible "consing" -- does that play a role?

data Things a = T1 a (Things a) | T2 a (Things a) | LastT a

Things is also parameterized just like Point, but, again, Things is not a tuple type for the reasons above, e.g., just having one parameterized constructor means automatically a tuple type, right?

LB