;; Two widenings of different signatures in one program, so the dev loop has ;; two thunks to tell apart across a reload. ;; ;; A thunk is not a function anybody wrote, so nothing in the source names it ;; and nothing can be edited to rename it. But Session.compatible compares a ;; reload's functions against the running program's *by name*, and a name that ;; means whichever thunk was minted first means a different signature the ;; moment the forms are reordered — which reads to the session as a function ;; whose signature was edited, and answers an ordinary edit with "Restart to ;; change it". So the name is the signature, spelled so that it can be read ;; back, and reordering these two calls is an ordinary body change. (defn a1 [x i32] i32 (+ x 1)) (defn b1 [x i64] i64 (+ x 1)) (defn use32 [f (Fn [i32] i32)] i32 (f 1)) (defn use64 [f (Fn [i64] i64)] i64 (f 1)) (defn both [] i32 (println (use32 a1)) (println (use64 b1)) 0) (defn main [] i32 (both))