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
;