Clojure中如何不重启REPL恢复被误覆盖的内置函数
恢复Clojure内置
vector函数的方案 完全不需要重启REPL,用以下任意一种方法都可以完成恢复:
- 方案1:解除当前命名空间的错误绑定
Clojure查找符号时会优先查找当前命名空间的绑定,不存在时才会回退到clojure.core的公共绑定。你只需要删除当前命名空间下错误定义的vector符号即可恢复原始调用:
(ns-unmap *ns* 'vector)
- 方案2:直接重新绑定到原始内置函数
你也可以直接将当前命名空间的vector符号重新指向clojure.core的原始实现:
(def vector clojure.core/vector)
验证恢复结果
执行完上述任意操作后,运行你原本需要的代码即可验证效果:
(def my-vector (vector 1 2 3 4 5 6))
此时my-vector的取值为预期的[1 2 3 4 5 6],说明vector已经恢复为原始内置函数定义。
内容的提问来源于stack exchange,提问作者leifericf
相关产品推荐
相关产品推荐

