So I was reading http://www.podval.org/~sds/ocaml-sucks.html, which includes this quote (in the context of problems with ocaml):
there are actually three mildly different syntaxes:
- the official one is described in the manual
- a superset thereof is accepted by the compiler ocamlc
- something similar (but ever so slightly different) is accepted by the preprocessor Camlp4 (e.g., it accepts List.map [1;2;3]
~f:fun x -> x, which is also accepted by the top-level, but not
the compiler)
What are examples of ocaml code fragments that are accepted by the ocamlc but do not match the manual?
PS – I’m mainly interested in OCaml 4.00.1, but previous versions are also interesting…
One funny example, in the interest of curiosity only:
The differences between Camlp4 and the OCaml compiler are sometimes bugs, but most often explained by the difference in parser technology: if you write an idiomatic LR parser and a LL parser for the same language with mildly annoying syntax subtleties, you should not expect both to match perfectly. I don’t think this is a problem in practice (but in practice most people don’t use Camlp4).