A Field is an attribute of a Type, be it a
!type declaration (aka a
Tuple) or a
!table (aka a
A Field is nested inside a Type definition. It is comprised of a name Identifier, the "element of" operator (
<:), and a Type definition. The Type is usually a Primitive or a reference to a Type, but it can also be an inline definition of a new Type.
If the Type definition ends with a question mark (
?), the Field's Type is nullable (by default all Types are presumed to be non-nullable).
A Type with some Primitive Fields:
App: !type Type: foo <: int bar <: string?