# Intermediate code generation - Put symbol table in the reader monad and it to the stack or use the state monad for everything. - Add errors handling to the monad stack. # ELF generation - Don't ignore relocations where the symbol is not defined in the symbol table. Report an error about an undefined symbol. - Don't hardcode symbols in symbolEntry. # Name analysis - Format error messages.