Back when I was in the university (90&#x27;s), Lisp, Prolog and Caml Light (OCaml&#x27;s percursor) were forbidden to be chosen in compiler design classes, although we used them a lot in other classes.<p>The reasoning for the rule, was that they made our compiler assignments too easy.<p>On my case, we ended up using the recently introduced Java with JavaCC and NASM macros for the generated bytecode.<p>Nowadays I would only use something like C++ for the runtime library, or reuse of existing tools, e.g. LLVM.