~jojo/Carth

Disclaim WIP status in readme
Fix subst not applied to accesses of varbindings of DLeaf
Fix not checking in dec tree Access if type vars bound
Remove remnants of AnnotAst.Fun
Allow patterns in parameter of fun

Refutable patterns will raise an error in the type checker.

Added bonus is that `fun` is now equivalent to a sugared, special case
of `fun-match`, and is desugared as such in Infer.
unsugar -> desugar
Allow Box in pattern to dereference
Fix some minor warnings
Fix some trivial warnings
Update std with undefined & panic functionality
Handle unit and other zero-sized types in alignmentof & sizeof
Delay StartNotDefined error until after typechecking
Make Pair a builtin datatype
Fix fun-match globals not allowed to be recursive

;; This was and should be allowed
(define (foo x) (foo x))

;; This was and should be disallowed
(define foo foo)

;; This was disallowed, but should be allowed
(define foo
  (fun-match
    ((case x
           (foo (deref x))))))
Disallow []. Add "case" keywords to match-expression to read better
Add basic import system. Basically C-style include
Refactor Codegen. Separate module for ABI-related stuff

Also had to separate a module for the Gen-monad, as Haskell can't have
cyclical imports.
Allow integer and boolean literals in patterns

Could exploit the existing Match.PCon constructor to represent not
just datatypes, but these other enumerables as well. Didn't have to
make many additions/modifications at all -- quite nice!
Verify LLVM module before compiling to catch errors

Of course, these are internal compiler errors, but they're better to
catch in `verify` for debugging purposes. Previously, LLVM would just
segfault when processing a malformed module.
Fix incorrect from-label used in phi-node of decision switch
Next