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

欢迎!请查阅 关于 页面以了解有关工作方式的一些更多信息。

0
core.logic

`
(deftest test-34-unify-with-metadata
(is (run* [q]

        (== q (quote ^:haz-meta-daytuhs (form form form))))
  '((^:haz-meta-daytuhs (form form form)))))

`

我不确定这个意图是什么,但用以下代码替换会导致测试失败。

`
(deftest test-34-unify-with-metadata
(is (= (run* [q]

           (== q (quote ^:haz-meta-daytuhs (form form form))))
     '((^:haz-meta-daytuhs (form form form))))))

`

我认为正确版本可能接近那个。

3 答案

0

评论者:dnolen

我非常确定元数据在形式上导致了异常,这正是这个测试的目的。

0

评论者:jafingerhut

由于该测试的当前编写方式,它具有以下形式

`
(is (run* [q] (expr))

'(expr2))

`

宏 'is' 的第二个参数是可选的,如果存在,应该是字符串,而不是类似 '(expr2)' 的东西。如果 (run* (link: q) (expr)) 返回 true 而不抛出异常,则测试通过,'(expr2)' 完全被忽略。这就是为什么测试似乎被错误编写的原因。

0
参考资料: https://clojure.atlassian.net/browse/LOGIC-153 (由 jafingerhut 报告)
...