如何匹配包含 lvar 的地图?

Posted

技术标签:

【中文标题】如何匹配包含 lvar 的地图?【英文标题】:How to match a map that contains lvars? 【发布时间】:2014-02-25 19:52:11 【问题描述】:

我正在尝试使用地图作为我的数据结构,并初始化它们以包含 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"]。我怎样才能使这两个目标都成功?

【问题讨论】:

【参考方案1】:

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

【讨论】:

非常感谢。好像它是在 11 月 25 日合并的,但从那以后就没有新版本了。

以上是关于如何匹配包含 lvar 的地图?的主要内容,如果未能解决你的问题,请参考以下文章

core.logic lvars 上的算术和 clojure 函数

收藏 如何利用Google地图的API匹配2条路径是不是部分重合?

如何将生成的“地图”与给定的“color_map”匹配?

如何计算用户在某个车站上下车,地图匹配方法

google map中影像地图是墨卡托投影,矢量地图是高斯投影,请问这两种地图是如何匹配的?

[地图Map] 百度地图api 自定义路线的道路匹配问题