core-typed 2023-08-19

Ok, this is even wilder. Just inferred (reduce (fn [a b] (+ a b)) [1]). Involves iteratively checking the first arg until it converges. 1st time: [(Val 1) (Val 1) -> Long], 2nd time [Long Long -> Long]. 3rd time [Long Long -> Long] Done.

3
❤️ 3
😮 5

We could use this same strategy to check loops. Keep checking until the types of recur args stop changing.