mapTypeForSizesKeyTypeValueType

fun mapTypeForSizesKeyTypeValueType(    sizeRange: A_Type,     keyType: A_Type,     valueType: A_Type): A_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

sizeRange

An integer range type specifying the permitted sizes of a map of the proposed type.

keyType

The type of all keys of maps of the proposed type.

valueType

The type of all values of maps of the proposed type.