在clojure中,如何在2元素向量集合上应用2个不同的函数来创建列表?

在clojure中,如何在2元素向量集合上应用2个不同的函数来创建列表?,clojure,Clojure,在Clojure中,我有一个2元素向量的集合coll。我想创建一个集合,分别对集合的每个向量的第一个和第二个元素应用f和g。我认为这与构造有关 (def coll [[1 1000] [2 2000] [3 3000]]) 有没有一种惯用的方法来创建以下结果 [[f(1) g(1000)] [f(2) g(2000)] [f(3) g(3000)]] 对 对 再次列出FTW: (vec (for [[x y] [[1 1000] [2 2000] [3 3000]]] [(f x) (g

在Clojure中,我有一个2元素向量的集合coll。我想创建一个集合,分别对集合的每个向量的第一个和第二个元素应用f和g。我认为这与构造有关

(def coll [[1 1000] [2 2000] [3 3000]])
有没有一种惯用的方法来创建以下结果

 [[f(1) g(1000)] [f(2) g(2000)] [f(3) g(3000)]]


再次列出FTW:

(vec (for [[x y] [[1 1000] [2 2000] [3 3000]]] [(f x) (g y)]))

再次列出FTW:

(vec (for [[x y] [[1 1000] [2 2000] [3 3000]]] [(f x) (g y)]))

要从头开始写这篇文章,我将完全按照skuro所做的去做——它简单、容易、可读。但不久前,我还编写了一个高阶函数来抽象它,名为。所以现在我把它写成

(map (knit f g) [[1 1000] [2 2000] [3 3000]])

要从头开始写这篇文章,我将完全按照skuro所做的去做——它简单、容易、可读。但不久前,我还编写了一个高阶函数来抽象它,名为。所以现在我把它写成

(map (knit f g) [[1 1000] [2 2000] [3 3000]])

这就是我所做的。但不知何故,我觉得有一种更惯用的方式来写id。fn[[p1p2]][f p1 g p2]部分很难读@YehonathanSharvit,我认为它一点也不难读懂,我认为它是两部分,args向量和体[p1p2]。如果你用新行将这两部分分开,也许你会发现它更具可读性。你觉得@skuro关于列表理解的回答如何?@YehonathanSharvit,我通常更喜欢地图和过滤器而不是列表理解,但这主要是品味的问题。为什么你更喜欢地图而不是列表理解?这就是我所做的。但不知何故,我觉得有一种更惯用的方式来写id。fn[[p1p2]][f p1 g p2]部分很难读@YehonathanSharvit,我认为它一点也不难读懂,我认为它是两部分,args向量和体[p1p2]。如果你用新行将这两部分分开,也许你会发现它更具可读性。你觉得@skuro关于列表理解的回答如何?@YehonathanSharvit,我通常更喜欢地图和过滤器而不是列表理解,但这主要是品味的问题。为什么你更喜欢地图而不是列表理解?+1表示优雅。。。。列表理解是多么有用,总是令人惊讶!请注意,在很多情况下,您甚至不需要vec.+1来表示优雅。。。。列表理解是多么有用,总是令人惊讶!注意,在很多情况下,您甚至不需要vec。