I'm exploring the right data types for writing a type inference with higher kinds and poly types.
Putting more things in the type system can force you to think about more things, but it also can make it harder and more verbose to write and read algorithms.
- This one implements a fairly good type inferer, with a free monad, but kinds are not enforced, and forall/schemes are not considered atll.
- This one pushes kinds and generic vars into the type system with a nested tuples approach
- This one borrows from Oleg's typed eval, but doesn't actually implement any hard things yet.