attach tvars to nodes when possible, and the reverse - in order to help describe type errors get_compress_key(): unused unifier.simplify():   speed hack for the most-called function in the whole damned compiler   uncomment once again the code that removes typeless equations. unifier.prune():   rewritten.  Now treated as a graph algorithm, the point of which is to leave only connected parts of the graph.  The previous algorithm had 'leaks', which I believe led to the hack in simplify() that left in typeless equations.  fingers crossed. solver.__init__():   save the expression being typed, to help describe type errors solver.solve():   when printing sets of tvars, sort them using 'ps()', helps when ediffing output   catch type errors, call find_type_error() find_type_error():   try to find the nodes responsible for the conflict, and print a range of the node tree, VERY helpful. typer.go():   decode let-bound names as well as lambda-bound ones.
attach tvars to nodes when possible, and the reverse - in order to help describe type errors
get_compress_key(): unused
unifier.simplify():
  speed hack for the most-called function in the whole damned compiler
  uncomment once again the code that removes typeless equations.
unifier.prune():
  rewritten.  Now treated as a graph algorithm, the point of which is to leave only connected parts of the graph.  The previous algorithm had 'leaks', which I believe led to the hack in simplify() that left in typeless equations.  fingers crossed.
solver.__init__():
  save the expression being typed, to help describe type errors
solver.solve():
  when printing sets of tvars, sort them using 'ps()', helps when ediffing output
  catch type errors, call find_type_error()
find_type_error():
  try to find the nodes responsible for the conflict, and print a range of the node tree, VERY helpful.
typer.go():
  decode let-bound names as well as lambda-bound ones.


samrushing/irken-compiler,samrushing/irken-compiler,samrushing/irken-compiler,samrushing/irken-compiler