Static
defines a limited set of statically parameterized types and a common interface that is shared between them. Defining a new static type that conforms with this interface only requires defining the following:
Static.static(::T)
- given the non-static typeT
return its static counterpart.Static.is_static(::Type{S})
- given the static typeS
returnTrue()
.Static.known(::Type{S})
- given the static typeS
return the known non-static value.
Fore example, the following would appropriately define the interface for StaticChar
Static.static(x::Char) = StaticChar(x)
Static.is_static(::Type{T}) where {T<:StaticChar} = True()
Static.known(::Type{StaticChar{C}}) where {C} = C::Char