# Types * #### [Alias](./alias.md) * #### [Unique](./unique.md) --- # Representation ```text TEMPLATE[[MODIFIERS] DEFINES...;...] ``` ## Modifiers A modifier is an internal setting (a bit mask or single value), cannot be set by a user Each template below has its own modifiers ## Defines User specified # Templates A template is an incomplete type ```text Template[[] Field; ...] ``` If a field in a template is not filed, one of these are required: ## Any Denotes a field in a template that has not resolved A template by name only expands to all inner fields as `Any` ## Generic.SYMBOL Generic for alias and unique types, type is replaced with type passed ## Collection[TYPE] A list of types with shape of TYPE, only can have one collection per type If using a collection the Collection[TYPE] must be the last type on the templates type list ## Void Denotes that a field that does not resolve to anything ## Value Templates * #### [Select](./select.md) * #### [Bit](./bit.md) ## Container Templates * #### [Group](./group.md) * #### [Buffer](./buffer.md) * #### [Map](./map.md) * #### [Queue](./queue.md) * #### [Union](./union.md) * #### [Native](./native.md) * #### [Error](./error.md) ## Qualifier Templates * #### [Const](./const.md) * #### [Empty](./empty.md) * #### [Ref](./ref.md) * #### [Shared](./shared.md) ## Function Templates * #### [Function](./function.md) * #### [Task](./task.md) * #### [Overload](./overload.md) ## AST Templates * #### [Value](./value.md) * #### [Name](./name.md) * #### [Symbol](./symbol.md) * #### [Op](./op.md) * #### [Var](./var.md) * #### [List](./list.md) * #### [Lock](./lock.md) * #### [Namespace](./namespace.md)