Deviations: Strings
Size-tagged strings
Rationale
Size-tagged strings are string types which memoize the byte length of
the string. These are necessary because Elixir's String.t/0
type
drops the byte length of the string, which could be useful information
for the compiler.
Unions of size-tagged strings are subjected to concatenation into ranges and unions.
Example
Type.of("foo") # ==> String.t(3)
Normalization to elixir String type
The integer type parameter is stripped and converted to the empty list []
In the future, this may be changed to be the non_neg_integer()
type