Tiger — name anonymous function
Tiger — typecheck while expressions
Tiger — typecheck for expressions
Tiger — typecheck break expressions
Tiger — typecheck let expressions
Tiger — convert newlines to Unix
Tiger — sort lines in sources.cm
Tiger — use Main to verify the typecheker using a test AST
Tiger — typecheck array expressions
Tiger — remove unused value
Tiger — tidy up whitespace
Tiger — rename function composition operator

Aligns it with the name of the low-precedence function application operator.
Tiger — fix type equality for NAME types

It need not be the case that both types are of type NAME. We must also
handle the case when one of them is a NAME, but the other is something
else. This is important when typechecking recursive data types.
Tiger — add support for recursive data types
Tiger — remove usage of SMLNJ pattern matching extension

Standard ML does not have support for multiple patterns in a
single case rule.
Tiger — support *mutually* recursive data types
Tiger — create module for extracting free variables out of ASTs
Tiger — add `const` and `id` functions to the Lang module
Tiger — typecheck (mutually) recursive function definitions
Tiger — alias List to L