A look at the IronJS source code
The author of IronJS has made some claims (e.g. F# can feel “like a slightly crappier version of C#”) that I find surprising so I'm reading his code. I find it to be quite odd for a variety of reasons: Surprisingly OOP (dozens of interfaces and classes and hundreds of augmentations, static members and overloads) given how well suited ML is to writing compilers. Lots of low-level bit-twiddling. Uses List.empty instead of [] . Uses large tuples. Uses arrays of closures, e.g. Stmt : (Lexer.Token -> State -> Ast.Tree) array . Doesn't use a symbol table. Choice of data structures appears to incur lots of unnecessary boxing. Odd choice of data structures for memory representation, e.g. null , left and stmt fields for a token are scattered. Doesn't seem to use concurrency or parallelism. Parser contains only 42 match expressions in 1,400 lines of code. Massive amounts of code duplication. Hand-rolled parser is unusual. Ha...