A rather different application, of which monoidal categories can be considered an abstraction, is that of a system of data types closed under a type constructor that takes two types and builds an aggregate type; the types are the objects and formula_3 is the aggregate constructor. The associativity up to isomorphism is then a way of expressing that different ways of aggregating the same data—such as formula_4 and formula_5—store the same information even though the aggregate values need not be the same. Identity objects are analogous to algebraic operations addition (type sum) and multiplication (type product). For type product - identity object is the unit formula_6, it trivially fully inhabits its type, so there is only one inhabitant of the type, and that is why a product with it is always isomorphic to the other operand. For type sum, the identity object is the void type, which stores no information and its inhabitants impossible to address. The concept of monoidal category does not presume that values of such aggregate types can be taken apart; on the contrary, it provides a framework that unifies classical and quantum information theory.