(Introduced in OCaml 4.02.2, extended in 4.03)
Some syntactic constructions are accepted during parsing and rejected during type checking. These syntactic constructions can therefore not be used directly in vanilla OCaml. However, -ppx rewriters and other external tools can exploit this parser leniency to extend the language with these new syntactic constructions by rewriting them to vanilla constructions.
(Introduced in OCaml 4.02.2, extended to unary operators in OCaml 4.12.0)
|
There are two classes of operators available for extensions: infix operators with a name starting with a # character and containing more than one # character, and unary operators with a name (starting with a ?, ~, or ! character) containing at least one # character.
For instance:
Note that both ## and !# must be eliminated by a ppx rewriter to make this example valid.
(Introduced in OCaml 4.03)
|
Int and float literals followed by an one-letter identifier in the range [g..z∣G..Z] are extension-only literals.