map Type For Sizes Key Type Value Type
Construct a new map type with the specified permitted range of number of * elements, the specified types of keys, and the specified types of values. Canonicalize the values for singularities: such as the size range being zero (in which case the key type and value type are reduced to bottom).
An enumeration for the size range is weakened to a kind.
A ⊥ key type or value type implies exactly zero elements, or ⊥ as the resulting map type if zero is not an allowed size.
At most zero elements implies ⊥ key and value types.
A non-meta enumeration for the key type bounds the maximum size of the map (e.g., a map from booleans has at most 2 elements).
Similarly, an integral range for the key type bounds the maximum size of the map (you can't have a 1000-element map from bytes).
Return
The requested map type.
Parameters
An integer range type specifying the permitted sizes of a map of the proposed type.
The type of all keys of maps of the proposed type.
The type of all values of maps of the proposed type.