I implemented the Nimble type inference algorithm from Henry Baker's old Common Lisp paper in Clojure awhile back for #reasons. It's based on lattice/algebraic data flow (Kaplan-Ullman) rather than logical unification (Milner), and works well to calculate type specialization while compiling dynamic languages:
https://www.plover.com/misc/hbaker-archive/TInference.html
Yesterday I added a simple C generator to make something like Pre-Scheme <https://prescheme.org> for #Clojure…
