The package "scala" has a number of classes named Product, Product1, Product2, and so on, up to Product22.
The descriptions of these classes are surely precise. For example:
Product4 is a cartesian product of 4 components
Precise, yes. Communicative? Not so much. I expect that this is the perfect wording for someone who already understands the sense of "cartesian product" being used here. For someone who doesn't, it sounds a bit circular. "Oh yes, well of course Product4 is the mumble product of 4 mumble-mumbles."
Please help me understand the correct functional-language viewpoint. What is the sense of "cartesian product" being used here? What do the Product classes' "projection" members indicate?