2024 年 Clojure 问卷调查! 中分享您的想法。

欢迎!有关如何使用此平台,请参阅 关于 页面以获取更多信息。

0
core.unify

在 occurs? 函数中的 cond 语句中,这个条件

(zip/end? z) false

出现了两次。除非我完全理解错了,第二个子句将永远不成功。

此外,我在想,复合?(在 core.unify 中)对于字符串为真是否有意义。这看起来意味着 occurs? 将徒劳地检查字符串的每个字符来查找变量。

1 个答案

0
参考:https://clojure.atlassian.net/browse/UNIFY-7(由 glchapman 报告)
参考 JIRA 问题的附加评论

感谢修复死代码。至于 strings 在 composite? 中解析为 true,再次查看您会看到 composite? 函数中有一个 `(string? x)` 测试。我的预期是以下结果不会统一("foo" 应被视为原子)


    user=> (require '[clojure.core.unify :as u])
    nil
    user=> (u/unify '[?x ?y ?z] "foo")
    {?x \f, ?y \o, ?z \o}


但是,我现在可以理解,更改它可能会被视为是一个破坏性的更改,因此不值得这么做。
...