最简单的情况
`
user=>
(deftype Bench [#^{:unsynchronized-mutable true} val]
Runnable
(run [_]
(fn [] (set! val 5))))
java.lang.IllegalArgumentException: 无法赋值给非可变值:val (没有文件来源:5)
`
函数应该能够修改其作用域内的可变字段(就像 Java 中的内部类一样)。
已作为错误报告,因为循环特殊形式有时会展开成 fn 形式
`
user=>
(deftype Bench [#^{:unsynchronized-mutable true} val]
Runnable
(run [_]
(let [x (loop [] (set! val 5))])))
java.lang.IllegalArgumentException: 无法赋值给非可变值:val (没有文件来源:9)
`