::= "fn" ["fails" "with" ]? "{" * "}" ::= "(" ? ")" "->" ::= ("," )* ::= ["/" ]? ::= ? ::= | "," | ::= | "," ::= | "," ::= ::= ".default(" ")" ::= "fn" "(" ? ")" "->" "[" "]" "{" * "}"