2013-05-15 10 views

Odpowiedz

7

można użyć map

(map #(%1 %2) [str #(* 2 %) (partial inc)] [3 5 8]) 
("3" 10 9) 

Jeśli potrzebujesz wektor wstecz, można (apply vector ...)

(apply vector (map #(%1 %2) [str #(* 2 %) (partial inc)] [3 5 8])) 
["3" 10 9] 

Zastrzeżenie: Nie wiem dużo Clojure, więc nie byłoby prawdopodobnie lepsze sposoby, aby to zrobić.

+0

Nice! Dzięki! Wygląda na to, że '(partial inc)' nie działa, ale '(partial + 1)' robi! – leontalbot

+2

@ user1184248 Myślę, że '(częściowe inc)' działałoby, ale to jest to samo, co po prostu 'inc'. –

+2

Aby uzyskać powrót wektora, trochę krócej: '(mapv # (% 1% 2) [str # (* 2%) inc] [3 5 8])' – leontalbot

2

alternatywę niekoniecznie lepiej:

user=> (for [[f x] (map vector [neg? pos? number?] [1 2 "foo"])] 
    #_=> (f x)) 
(false true false) 

Aby uczynić map wersja nadaje się do varargs:

user=> (map (fn [f & args] (apply f args)) [+ - *] [1 2 3] [4 5 6] [7 8 9]) 
(12 -11 162) 
Powiązane problemy