forked from augustss/MicroHs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
44 lines (44 loc) · 1.71 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
* Have compile return a Stats record of timing etc
* make the runtime system catch ^C and stop execution
* with 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
# works partially, but not constraint solving doesn't happen in all the right places
# check for escaping skolemized variables
* 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
* Handle tupled dictionaries better for recursive calls
* Split eval.c
- Partially done
- debug 32 bit
* Removing [] from prim table
* Faster compression
* Use pointer reversal, might be slower
- In GC mark pass
- In evaluator
* Fix bug uncovered by Data.Type.Equality
* mkQIdent
* Do not use the C stack during evaluation
* Fix bug, line 629, TypeCheck.c
* 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