anchor.diff:       | optional type
        ;
   
  -optional type = "?", type;
  +optional type = type, "?" ;
   
   scalar type   = "Any"
                 | "Boolean"
  
positive.code: 
  === Nullability
  
  TODO: DECIDE ON WHERE TO PUT "?"
  
  The type system also provides a way to track nullability, i.e. a type may express if a given expression may be `NULL` or not:
  
  * Non-nullable types are all types that do not permit `NULL` as a valid result of evaluating the underlying expression.
    All types specified above are non-nullable types.
  * Nullable types are all types that permit `NULL` as a valid result of evaluating the underlying expression.
    Nullable types are formed by prefixing/suffixing a non-nullable type with a question mark.
  
  Note that `NULL` is not a type but a value that inhabits every nullable type.
  
  ==== Type Annotation
  
  
negative.code:               | "Duration"
                ;
  
  container type = "LIST", "<", type, ">" ;
  
  type annotation = term, "::", type ;
  ----
  