如何撤消clojure核心函数的重写?

如何撤消clojure核心函数的重写?,clojure,Clojure,我在学clojure。我意外地改写了clojure:seq中的一个核心方法。我运行的代码行是: (def seq“小心!”) 然后我在控制台中得到一个警告: 警告:seq已在namespace:user中引用:#'clojure.core/seq,替换为:#'user/seq 现在seq的值是小心 我如何撤销这个?这不是一种相当危险的力量吗?从理论上讲,一个人不能这样破坏一个程序吗?很可能是您在自己的命名空间中定义了一个seq符号,使得seq在没有明确指定要查找的命名空间的情况下无法访问 要检查

我在学clojure。我意外地改写了clojure:seq中的一个核心方法。我运行的代码行是:

(def seq“小心!”)

然后我在控制台中得到一个警告:

警告:seq已在namespace:user中引用:#'clojure.core/seq,替换为:#'user/seq

现在
seq
的值是
小心


我如何撤销这个?这不是一种相当危险的力量吗?从理论上讲,一个人不能这样破坏一个程序吗?

很可能是您在自己的命名空间中定义了一个
seq
符号,使得
seq
在没有明确指定要查找的命名空间的情况下无法访问

要检查是否是这种情况,请在“向上吹
seq
up”之后尝试此操作:

(clojure.core/seq[1 2 3])
如果有效(输出
(1 2 3)
),则解决方案是从
clojure.core
再次执行,默认情况下:

(请参阅'clojure.core:仅限['seq])
或者,对于此特定命名空间:

(请参阅clojure:only['seq])

很可能是您在自己的命名空间中定义了一个
seq
符号,使得
seq
在未明确指定要查找的命名空间的情况下无法访问

要检查是否是这种情况,请在“向上吹
seq
up”之后尝试此操作:

(clojure.core/seq[1 2 3])
如果有效(输出
(1 2 3)
),则解决方案是从
clojure.core
再次执行,默认情况下:

(请参阅'clojure.core:仅限['seq])
或者,对于此特定命名空间:

(请参阅clojure:only['seq])

仅仅
引用
在名称空间中定义变量后对其进行初始化将不起作用,因为存在编译器保护

您可以取消映射var,以便能够再次引用该名称:


(ns取消映射*ns*'序号)
(参见clojure)

只需
引用
在名称空间中定义变量后对其进行初始化将不起作用,因为存在编译器保护

您可以取消映射var,以便能够再次引用该名称:


(ns取消映射*ns*'序号)
(参见clojure)

您可以重新导入
seq
(需要'[clojure.core:参考[seq]])
您可以重新导入
seq
(需要'[clojure.core:参考[seq]])