ref: 3e82e2c10aa33609ef7badfed65bf034a2079633
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 * Try Oleg's abstraction algorithm - Seems to be slower * 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 * Implement lazy matching * Implement strict matching * Change default 'default'? * Implement TAB completion * Better pretty print of Expr * Move extra stuff from Data.List into its own module * Allow top level pattern bindings - Merge EBind and EDef * Implement pattern synonyms * Implement qualified constraints * Export the right list functions * Improve defaulting (only default to Integer/Double if Num) * 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 Bugs: * Missing IO in ccall show wrong location * Limited class imports hide default methods * Check for escaping skolemized variables