Why ML/OCaml are good for writing compilers (1998)
I&#x27;ll note that some of the aspects don&#x27;t necessarily work out like that in practice:<p>1. The GC part is true, but one has to remember that this was written at a time when GC was still a bit of an unusual feature in mainstream languages.<p>2. Tail recursion doesn&#x27;t really make much of a difference for walking trees, which is recursive, but (mostly) not tail recursive.<p>3. OCaml in particular uses 63&#x2F;31-bit ints due to implementation details, which isn&#x27;t a good fit for 64&#x2F;32-bit integers. The strings and bignum part is mostly right, though.<p>4. ADTs can be good or bad for describing ASTs. Once you enrich ASTs with semantics shared by all variants (such as source coordinates), inheritance can become a better fit than ADTs.<p>8. Type inference doesn&#x27;t really extend to module signatures, which you have to write out explicitly (though tooling such as `ocamlc -i` allows you to let the compiler help you write them). I also generally find it better to explicitly annotate functions with types. Not only does it make the code more readable later in its life, but you get fewer truly impenetrable type error messages because you forgot parentheses or a semicolon somewhere.<p>That said, there are several good points still.