ref: 6ce8da5b4d9ce80140c512a4eb7a9711b2cb4e7f
dir: /TODO/
* Have compile return a Stats record of timing etc * Make the runtime system catch ^C and stop execution * Type checker improvements: - allow generalization for local bindings - use subsumption (like if) in the arms of alternatives - instead of skolemization, use regular variables, making sure they are unique * Redo type synonym expansion - Do expansion during unification * Redo handling of synonym and instance tables. - These tables can persist during the compilation and only grow * Implement two level tables for instances even in the tricky cases * Removing [] from prim table * Faster compression * Use pointer reversal during marking, will be slower * Fix bug uncovered by Data.Type.Equality * mkQIdent * Get rid of evalstring() - do everything in Haskell - make a low level primError that takes a utf8 string - get rid of noMatch and noDefault primitives * Better pretty print of Expr * Allow top level pattern bindings - Merge EBind and EDef * Implement pattern synonyms * Implement qualified constraints * Use capi, add value and field modifiers * Ad hoc fix for f.g: check if g is a field * Divide lib into different packages * Sync lib with GHC base * Handle closing of Handle properly (don't crash on multiple close) - implement ForeignPtr with finalizers for this. * Use finalizers for alloca? * Better naming of internal identifiers * Implement Exception properly * GADT syntax Bugs: * Missing IO in ccall show wrong location * Check for escaping skolemized variables