;; A dyn is the one thing a capture refuses outright, and for the reason a ;; struct field of dyn already refuses: the collector's roots are frames, and ;; nothing pushes the fields of the environment struct a capture synthesises. ;; A copy in there would be a live value reachable only through memory the ;; marker never walks. Milestone 2's per-type descriptors lift it, alongside ;; the condition payload's and the struct field's. (defn run [f (Fn [] i64)] i64 (f)) ;; [d] is unannotated, which is what makes it a dyn. (defn use [d] i64 (run (fn [] (i64 d)))) (defn main [] i32 (println (use 7)) 0)