在 1.4 及最新 master 版本上
user> (defn ten () 10)
'user/ten
user> (doall (pmap #(with-redefs (fn [] ten) (fn [ ] %) (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 调用序列之后,原始值始终会被恢复。