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