在 1.4 版本和最新主分支上
user> (defn ten () 10)
'user/ten
user> (doall (pmap #(with-redefs (fn [] ten) (%)] (ten)) (range 20 100)))
(20 21 22 23 24 25 34 27 28 29 30 31 32 33 34 35 36 37 38 39 39 35 42 43 44 45 48 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 79 87 88 89 90 91 92 93 94 95 97 92 98 99)
user> (ten)
79
不确定这究竟是否是一个缺陷,但文档并未提及并发安全问题,我预期任何(任意交错)的 with-redefs 调用序列后都会恢复原始值。