Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Clojure中的向量向量映射到散列向量_Clojure_Functional Programming - Fatal编程技术网

将Clojure中的向量向量映射到散列向量

将Clojure中的向量向量映射到散列向量,clojure,functional-programming,Clojure,Functional Programming,我在2D空间中有一个点向量,例如: [[0 0] [1 1] [2 2]] 需要计算向量中某个点和每个点之间的距离,以确定向量中哪个点离我要查询的点最近。我需要知道距离和最近点,所以我想要一个散列向量,如下所示: [{:point [0 0] :dist 2.7} {:point [1 1] :dist 3.5} {:point [2 2] :dist 4.3}] (defn closest-point [point all-points] (map #({:point % :dis

我在2D空间中有一个点向量,例如:

[[0 0] [1 1] [2 2]]
需要计算向量中某个点和每个点之间的距离,以确定向量中哪个点离我要查询的点最近。我需要知道距离和最近点,所以我想要一个散列向量,如下所示:

[{:point [0 0] :dist 2.7} {:point [1 1] :dist 3.5} {:point [2 2] :dist 4.3}]
(defn closest-point [point all-points]
    (map #({:point % :dist (distance point %)}) all-points))
如何将前者转换为后者?我试过这样的方法:

[{:point [0 0] :dist 2.7} {:point [1 1] :dist 3.5} {:point [2 2] :dist 4.3}]
(defn closest-point [point all-points]
    (map #({:point % :dist (distance point %)}) all-points))
但我有一个错误:

(user=> ArityException Wrong number of args (0) passed to: PersistentArrayMap  clojure.lang.AFn.throwArity (AFn.java:437)
{…}扩展为fn[]{…},它尝试在没有任何参数的情况下调用映射

试试这个:

(defn closest-point [point all-points]
    (map (fn [p] {:point p :dist (distance point p)}) all-points))

{…}扩展为fn[]{…},它尝试在没有任何参数的情况下调用映射

试试这个:

(defn closest-point [point all-points]
    (map (fn [p] {:point p :dist (distance point p)}) all-points))

结果:-

({:point [0 0], :dist 2.7} {:point [1 1], :dist 3.5} {:point [2 2], :dist 4})
结果:-

({:point [0 0], :dist 2.7} {:point [1 1], :dist 3.5} {:point [2 2], :dist 4})

如果您使用地图而不是地图来进行理解,则更易于阅读。此外,要实际选择最近的点,只需使用“最小关键点”:


如果您使用地图而不是地图来进行理解,则更易于阅读。此外,要实际选择最近的点,只需使用“最小关键点”:


如果不从代码中删除任何内容,只添加一个单词:identity,就可以修复它呢


如果不从代码中删除任何内容,只添加一个单词:identity,就可以修复它呢


乔斯特,谢谢。我有一个复制粘贴错误,它忽略了散列的周围,我现在在问题中修复了这个错误。您的第二个解决方案非常有效!如果你删除开头的段落和第一个不起作用的例子,我会接受你的回答。Joost,谢谢。我有一个复制粘贴错误,它忽略了散列的周围,我现在在问题中修复了这个错误。您的第二个解决方案非常有效!如果你删除开头的段落和第一个不起作用的例子,我会接受你的答案。
(defn closest-point [point all-points]
    (map #(identity {:point % :dist (distance point %)}) all-points))