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

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

0
core.unify

在 occurs? 函数的 cond 语句中,这个条件出现两次:

(zip/end? z) false

除非我严重误解,第二个分句将永远不会成功。

另外,我想知道在 core.unify 中,composite? 对字符串为 true 是否合理。这似乎意味着 occurs? 将毫无意义地检查字符串中的每个字符以查找变量。

1 答案

0
参考:https://clojure.atlassian.net/browse/UNIFY-7(由 glchapman 提出)
参考已添加到 JIRA 问题中的评论

感谢修复死代码。至于在 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}


然而,我可以看出现在改变它可能被认为是一个破坏性的更改,因此不值得这样做。
...