shithub: MicroHs

ref: 2bcb05a5abfb65ab2779e4418df2cd33415a646c
dir: /TODO/

View raw version
* Add strict constructors
* Put on hackage
* Have compile return a Stats record of timing etc
* Add overloading
* Implement deriving
* Add the possibility to save a compiler cache in a file
  - Add SHA checksumming to the C code
  - Use filename as the cache lookup key and SHA for validation
* make the runtime system catch ^C and stop execution
* use pointer stack during GC instead of recursion.
* add pretty printing library
* whith dictionaries we need two optimizations to get rid of them
  -   case d of (d1,d2) -> ... (d1,d2) ...
    transforms to
      case d of (d1,d2) -> ... d ...
    this takes care of dictionary reconstruction
  -   f x y = ... f x e ...
    transforms to
      f x = let f' y = ... f' e ...
    this will specialize recursive functions
    (and make more efficient 'map' etc)
* Type checker improvements:
  - allow generalization for local bindings
  - use subsumption (like if) in the arms of alternatives
  - allow missing top level signatures (and generalize)
  - instead of skolemization, use regular variables, making sure they are unique
  - allow existential quantification
* Try Oleg's abstraction algorithm
* Generate (compressed) combinators in a separate file for compilation
  - Distribute this file instead of .comb file
* Use more compact(?) combinator file ('@f a ' instead of '(f a)')
* Generate C file directly from compiler
* Implement IORef
  - The IORef will need GC support
* Redo type synonym expansion
  - Only non-injective synonyms necessitate expansion(?)