shithub: MicroHs

Download patch

ref: 75709603d6582d9e824d5f5cd85294fc4d2a7375
parent: de4e5cacffc87bd8264623fa42afb17ff826c147
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Sun Feb 25 19:11:47 EST 2024

Less to do

--- a/TODO
+++ b/TODO
@@ -5,18 +5,11 @@
     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
@@ -26,23 +19,16 @@
   - 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
+* Use pointer reversal during marking, will be slower
 * Fix bug uncovered by Data.Type.Equality
 * mkQIdent
-* Do not use the C stack during evaluation
 * Fix bug, line 629, TypeCheck.hs
 * 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 more Char/String literals
 * Implement lazy matching
 * Implement strict matching
 * Change default 'default'?
--