在clojure记录中,如何将记录数组映射到向量?

在clojure记录中,如何将记录数组映射到向量?,clojure,Clojure,如果我有一个实现协议的记录向量,并且想要将每个记录的方法的返回值映射到另一个向量,有没有一种干净的方法可以做到这一点?我可以使用带有匿名函数的map来包装对该方法的调用,但这似乎有点笨拙 编辑: 事实上,这没什么。您只需将该方法用作调用map的第一个参数中的函数 (map mymethod myrecords) 由于一个无关的错误,这对我不起作用,我想我必须做 (map #(mymethod %) myrecords) …这就是我认为笨重的地方。因此,这个问题是无效的。记录上的方法与其他方法

如果我有一个实现协议的记录向量,并且想要将每个记录的方法的返回值映射到另一个向量,有没有一种干净的方法可以做到这一点?我可以使用带有匿名函数的map来包装对该方法的调用,但这似乎有点笨拙

编辑:

事实上,这没什么。您只需将该方法用作调用map的第一个参数中的函数

(map mymethod myrecords)
由于一个无关的错误,这对我不起作用,我想我必须做

(map #(mymethod %) myrecords)

…这就是我认为笨重的地方。因此,这个问题是无效的。

记录上的方法与其他方法一样使用map:

(defprotocol Foo 
  (foo [this]))

(defrecord Bar [bar]
   Foo 
   (foo [this] bar)

(map foo [(Bar. 1) (Bar. 2)])
=> (1 2)

记录上的方法与其他方法一样使用map:

(defprotocol Foo 
  (foo [this]))

(defrecord Bar [bar]
   Foo 
   (foo [this] bar)

(map foo [(Bar. 1) (Bar. 2)])
=> (1 2)

为什么看起来很笨重?它完美地完成了记录的并发处理,这是clojure的主要动机之一。并发是如何在这里发挥作用的?
map
函数返回一个惰性序列,但不保证并行处理产生该惰性序列中的元素。你想的是
pmap
?是的,我理解错了,是的,pmap。@KaKa,它有点笨重,因为闭包文字本身不做任何事情,它只是直接包装了另一个函数。它没有增加任何东西,所以是噪音。亚瑟说的是对的。您应该将“编辑”移至此问题的单独答案中,而不是将其作为问题的一部分。在这里回答你自己的问题是一种完全可以接受的做法。为什么这看起来很笨拙?它完美地完成了记录的并发处理,这是clojure的主要动机之一。并发是如何在这里发挥作用的?
map
函数返回一个惰性序列,但不保证并行处理产生该惰性序列中的元素。你想的是
pmap
?是的,我理解错了,是的,pmap。@KaKa,它有点笨重,因为闭包文字本身不做任何事情,它只是直接包装了另一个函数。它没有增加任何东西,所以是噪音。亚瑟说的是对的。您应该将“编辑”移至此问题的单独答案中,而不是将其作为问题的一部分。在这里,回答你自己的问题是完全可以接受的做法。