提问人:user3523406 提问时间:11/16/2023 更新时间:11/16/2023 访问量:41
使用 Incanter 的 Clojure 项目中的函数命名空间冲突
Function Namespace Conflicts in Clojure Project with Incanter
问:
我目前正在阅读 Eric Rochester 的“Clojure Data Analysis Cookbook”,并遇到了涉及 abs 函数的命名空间冲突问题。我使用 Leiningen 设置了我的项目,并包含了 incanter(版本 1.9.3)的依赖项。但是,当我尝试在 REPL 中要求 incanter.core 和 incanter.io 命名空间时,我收到一系列关于重新定义 abs 函数的警告。
这是我所做的:
使用 创建了一个新项目。
lein new data-eric
添加了 Incanter 依赖项:
project.clj
[incanter/incanter-core “1.9.3”] [incanter/incanter-io “1.9.3”]
在 VS Code 中启动了 REPL 并运行了以下命令:command + shift + P: Start a Project REPL and Connect -> Leiningen
(require '[incanter.core :as ic]
'[incanter.io :as io])
这导致了多个警告,所有警告都与在各种命名空间中重新定义的 abs 函数有关,例如 clojure.core.matrix.impl.mathsops、clojure.core.matrix.protocols 和 incanter.core。
警告示例:
WARNING: abs already refers to: #'clojure.core/abs in namespace: clojure.core.matrix.impl.mathsops, being replaced by: #'clojure.core.matrix.impl.mathsops/abs
我知道这是由于 abs 函数存在于多个命名空间中,但我不确定处理这些警告的最佳方法。我是否应该担心这些警告会影响我的项目功能?是否有建议的方法来解决或解决此问题?
任何指导或建议将不胜感激。先谢谢你!
答:
这些警告不是给你的,确切地说,它们是给 的作者的,据编译器所知,那可能就是你。core.matrix 在一年半前进行了更新以解决这些警告,但这并不能完全帮助您:Incanter 很旧,在过去五年中根本没有更新过,因此它依赖于旧版本的 core.matrix。我会忽略这些错误消息:如果你真的很热衷于,你可能会找到一种方法来依赖较新版本的 core.matrix,同时仍然使用旧的 Incanter,但版本倾斜会带来自己的风险。clojure.core.matrix.impl.mathsops
评论
abs
评论
abs
clojure.core