- We defined Product1 with one data constructor Product1 :: Bool -> Product1. How many values can we construct for Product1? Since it takes Bool, it can have two values Product1 True and Product1 False. This is the simplest product type that we have defined.
- Next, we defined a data type Product2. Product2's constructor takes two Bool values. For Product2, we can construct four values. Please refer to the following table:
Product2 fields Bool Bool Product2 True True Product2 True False Product2 False True Product2 False True
Note that we have four values for Product2. Also, note that we constructed Product2 by adding one more Bool field to Product1. For each possible value of Product1, we have two possible values ...