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 报告)
...