core-typed

2023-08-19T19:50:50.361179Z

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
2023-08-19T19:51:31.991319Z

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