在列表上匹配

时间:2012-05-24 21:09:53

标签: clojure clojure-core.logic

我想知道我是否可以使用像matche这样的东西与core.logic中的列表进行模式匹配

使用类似

的向量
=> (defn checko [code r] (matche [code] ([['foo ?a ?b]] (== r [?a ?b]))))
=> (run* [q] (checko [:foo :u 2] q))
  ([:u 2])

工作得很好,但我无法弄清楚如何匹配列表(foo:u 2)而不是矢量。原因是我想使用core.logic来分析clojure程序。

2 个答案:

答案 0 :(得分:1)

你的checko应该可以很好地匹配列表。

答案 1 :(得分:0)

如果作者本人的保证还不够,我已经使用了core.match和矢量模式匹配列表(实际上一般都是seqs)就好了 - 这就是他们应该做的事情。