Version 1 (modified by benl, 5 years ago)

--

Kinds

Kind
    ::=  SimpleKind
     |   SimpleKind -> Kind

SimpleKind
    ::=  *                      -- value type kind
     |   %                      -- region kind
     |   !                      -- effect kind
     |   $                      -- closure kind
     |   +                      -- witness kind
     |   (  Kind  )