Product is a datatype that contains two (or more, since this type could be used inductively) types at runtime. e `LM` ee ~ LM e ee Why is it called LM in code? Those two letters are acronym for limits. So this is a general representation of limits.