;; A closure's environment is found by walking the storage its function value ;; sits in — a frame slot, a global, a struct, an Option, a Vec's elements — ;; and a Map's storage is not walked. An (Fn ...) as a Map's value would hold ;; an environment the collector cannot see and would free. A Vec holds them, ;; and a (CFn ...) carries no environment and may go in a Map. (defn main [] i32 (let [ops (map-new string (Fn [i32] i32))] (put ops "id" (fn [x] x)) 0))