Formals
As the annotation references to exactly one expression. There is only one type expression possible
All notations are PascalCase
PascalCase with a starting uppercase letter. This is also in other languages a known convention for types
or classes
Types MUST be chosen from the existing list
see primitives
Operators MUST be chosen from the existing list
see operators
explicit AttrSet
and List
keywords are PROHIBITED
See the correct usage here
complex types MUST include their members explicitly
There is no AttrSet
and no List
keyword.
explicit Any
is PROHIBITED
Correct usage with type variables see here
Allowing arbitrary values within complex-types
It is possible to allow arbitrary values within complex types, but it requires an explicit statement.
There is no implicit any.
Type variables
must be written in LOWERCASE to prevent confusion
They are used instead of the Any
Keyword.
For Type bindings it is PROHIBITED to choose names from the reserved list
This will help to keep the code clean. Reduces complexity, resolves for shadowing and namespace conflicts, with global names.