Slooooowly creeping in the right direction I think
Make grammar kinda work
Playin' with grammar visualization tools
make an error actually an error
Make HIR contain origin code spans

Nothing does anything with it yet, but *in principle* the typechecker could use it
to make error messages better.  \o/
Make parser track (partial) origin info.

I don't think I am interested enough in the problem to BRAIN my way through
tracking origin info in the loop part of the pratt parser right now, so it's
just left absent.  That's fine for now.

We might also need to someday add source info for decls, but that'll be easier.
Rework AST so I can put codespan source info into it
Taking another stab at monomorph

I think the basic structure is there at least.
Continuing to inspect monomorph.

I THINK the approach of collecting the required instance data during type-checking
can work, or if not we just need to move it somewhere else.
So the tools I'm making here are useful.

The Austral compiler says:

  > Monomorphization of generic types works recursively from the bottom up. To transform a type to a monomorphic type, [walk the expression tree and for each type encountered]:
>  * If encountering a type with no type arguments, leave it alone.
>  * If encountering a generic type with (monomorphic) type arguments applied to it, retrieve or add a monomorph for the given type and arguments, and replace this type with the monomorph.
> Monomorphization of functions is analogous: starting from the main function (which has no generic type parameters), recur down the body.  If we encounter a call to a generic function f, look at the concrete type arguments the function is being called with. These define a mapping from the function’s type parameters ... to the type arguments [variables]...

It soooooounds like monomorphing functions goes top-down rather than bottom-up, but bottom-up makes more sense.  Ok.
Update lib versions and remove unneeded imports
Fix lexer bug with large characters in comments

Thanks, HJVT!
start collecting monomorph info
Small cleanup pass
Fix annoying little garnetfmt bug for sum types
Great I found a weird place where generics break
Refactor Type and Signature into their own file

whew jeez let's never let a branch get this big again
Ok, closure conversion of type parameters is a failure

let's stop here and merge this into main, then do a cleanup pass,
then do monomorphization which should accomplish the same thing