field
= ID EQUALS exp # Field
| ID # FieldShorthand
+ | DOTDOT # Wildcard
;
/******************************************************************************
atype
= ID # TypeVar
+ | DOUBLE_LESS ID (COMMA ID)* DOUBLE_GREATER # PlainEffect
| LPAREN (type (COMMA type)*)? RPAREN # TupleType
| LBRACKET type RBRACKET # ListType
| LBRACKET RBRACKET # ListTypeConstructor
| MINUS # Minus
| LESS # Less
| GREATER # Greater
+ | DOUBLE_LESS # DoubleLess
+ | DOUBLE_GREATER # DoubleGreater
| SEPARATED_DOT # Dot
;