Clojure 2024 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以获取更多有关如何使用本网站的信息。

0 投票
core.logic

Clojure 1.7 在创建符号时更改了字符串的归一化处理,具体说明如下
https://github.com/clojure/clojure/blob/master/changes.md#23-keyword-and-symbol-construction

因此,具有相同名称的两个非唯一不可变变量在当前的
不可变变量等价方法(检查 (identical? name (:name o)))下不再一定相等。

这导致依赖于非唯一不可变变量的规则引擎在 Clojure 1.7 中失败。

将 identical? 改为 = 可解决问题。

4 答案

0 投票

由:dnolen 评论

当我应用此补丁时,有两个测试失败。我们能否修复这些测试?谢谢!

0 投票

由:mschuene 评论

抱歉回复得不够快。
哪两个测试失败?它们似乎并不总是失败的。我用 mvn test 获取了零失败。
此外,当我检查 core.logic master 的新副本,应用补丁并运行测试时,所有测试都成功。

~/programming $ git clone https://github.com/clojure/core.logic
正在克隆到 'core.logic'...
remote: 正在计数对象:14868,完成。
remote: 总计 14868(delta 0),reused 0(delta 0),pack-reused 14868
正在接收对象:100%(14868/14868),3.02 MiB | 1.86 MiB/s,完成。
正在解决差异:100%(3955/3955),完成。
正在检查连接性... 完成。
~/programming $ cd core.logic/
~/programming/core.logic $ git apply 0001-alter-equality-of-non-unique-lvars-for-clojure-1.7.patch
~/编程/core.logic $ mvn test
(链接:信息) 正在扫描项目...
(链接:警告)
(链接:警告) 在构建 org.clojure:core.logic:jar:0.8.11-SNAPSHOT 的有效模型时遇到了问题
(链接:警告) 表达式 ${artifactId} 已弃用。请使用 ${project.artifactId} 代替。
(链接:警告)
(链接:警告) 建议修复这些问题,因为它们威胁到构建的稳定性。
(链接:警告)
(链接:警告) 因此,未来的 Maven 版本可能不再支持构建这样的错误项目。
(链接:警告)
(链接:信息)
(链接:信息) ------------------------------------------------------------------------
(链接:信息) 构建core.logic 0.8.11-SNAPSHOT
(链接:信息) ------------------------------------------------------------------------
(链接:信息)
(链接:信息) --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ core.logic ---
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-source (add-clojure-source-dirs) @ core.logic ---
(链接:信息) 源目录:/home/kima/编程/core.logic/src/main/clojure 已添加。
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-resource (add-clojure-source-dirs) @ core.logic ---
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-test-source (add-clojure-test-source-dirs) @ core.logic ---
(链接:信息) 测试源目录:/home/kima/编程/core.logic/src/test/clojure 已添加。
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-test-resource (add-clojure-test-source-dirs) @ core.logic ---
(链接:信息)
(链接:信息) --- maven-resources-plugin:2.3:resources (default-resources) @ core.logic ---
(链接:信息) 使用 'UTF-8' 编码复制过滤资源。
(链接:信息) 跳过不存在的资源目录 /home/kima/编程/core.logic/src/main/resources
(链接:信息) 复制 14 个资源
(链接:信息)
(链接:信息) --- maven-compiler-plugin:3.1:compile (default-compile) @ core.logic ---
(链接:信息) 无需编译 - 所有类都是最新的
(链接:信息)
(链接:信息) --- clojure-maven-plugin:1.3.13:compile (clojure-compile) @ core.logic ---
编译 clojure.core.logic.unifier 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.nominal 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.datomic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.dcg 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.fd 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.pldb 到 /tmp/classes7718945366616667003.dir
编译 cljs.core.logic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.arithmetic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.protocols 到 /tmp/classes7718945366616667003.dir
编译 cljs.core.logic.pldb 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.bench 到 /tmp/classes7718945366616667003.dir
(链接:信息)
(链接:信息) --- maven-resources-plugin:2.3:testResources (default-testResources) @ core.logic ---
(链接:信息) 使用 'UTF-8' 编码复制过滤资源。
(链接:信息) 跳过不存在的资源目录 /home/kima/编程/core.logic/src/test/resources
(链接:信息) 复制 3 个资源
(链接:信息)
(链接:信息) --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ core.logic ---
(链接:信息) 无需编译 - 所有类都是最新的
(链接:信息)
(链接:信息) --- maven-surefire-plugin:2.10:test (default-test) @ core.logic ---
(链接:信息) Surefire 报告目录:/home/kima/编程/core.logic/target/surefire-reports


T E S T S

结果

已运行测试用例:0,失败:0,错误:0,跳过:0

(链接:信息)
(链接:信息) --- clojure-maven-plugin:1.3.13:test (clojure-test) @ core.logic ---

Testing clojure.core.logic.pldb.tests

Testing clojure.core.logic.nominal.tests

Testing clojure.core.logic.tests

运行 425 个测试,包含 661 个断言。
0 个失败,0 个错误。
(链接:信息) ------------------------------------------------------------------------
(链接:信息) BUILD 成功
(链接:信息) ------------------------------------------------------------------------
(链接:信息) 总共耗时:33.466 秒
(链接:信息) 完成时间:2015年7月26日日 14:03:54 中时区夏令时
(链接:信息) 最终内存:12M/300M
(链接:信息) ------------------------------------------------------------------------

~/编程/core.logic $ git status
在 master 分支
您的分支与 'origin/master' 保持同步。
未提交的更改
(使用 "git add ..." 更新将要提交的内容)
(使用 "git checkout -- ..." 放弃工作目录中的更改)

modified:   src/main/clojure/clojure/core/logic.clj
modified:   src/test/clojure/clojure/core/logic/tests.clj

未添加更改到提交(使用 "git add" 和/或 "git commit -a")

0 投票

评论人:ticking

我也在应用此补丁后没有看到失败的测试。

0 投票
参考:[https://clojure.atlassian.net/browse/LOGIC-169](https://clojure.atlassian.net/browse/LOGIC-169) (由 alex+import 报告)
...