如何匹配包含LVAR的地图



我试图将地图用作我的数据结构,并初始化它们以包含lvars以后从其他关系中分配值。

这成功:

(run 1 [q]
  (fresh [a b]
    (== q {:a 1 :b 2 :c b})
    (featurec q {:a b})))
-> ({:a 1, :b 2, :c 1})

但是这些失败:

;; Expected result -> ({:a 1 :b 2 :c _0})
(run 1 [q]
  (fresh [a b]
    (== q {:a a :b 2 :c b})
    (featurec q {:a 1})))
-> java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IPersistentMap
;; Expected result -> ({:a _0 :b 2 :c _0})
(run 1 [q]
  (fresh [a b]
    (== q {:a a :b 2 :c b})
    (featurec q {:a b})))
-> java.lang.ClassCastException: clojure.core.logic.LVar cannot be cast to clojure.lang.IPersistentMap

我正在使用[org.clojure/core.logic "0.8.5"]。我该如何使两个目标成功?

这是由于partial-map中的一个错误(http://dev.clojure.org/jira/jira/browse/logic-145)。

相关内容

  • 没有找到相关文章

最新更新