2013-02-11 12 views
5

mam sekwencję:jak zastosować funkcję dwóch argumentów do sekwencji?

[a b c ...] 

i funkcję (f x y). Chcę uzyskać to:

(f c (f b (f a 1))) 

Itd .. Jak to zrobić?

+4

[zredukować] (http://clojuredocs.org/clojure_core/clojure.core/reduce) –

+0

co '1 '? Nie mogę znaleźć sposobu na to, używając 'reduce'. Czy możesz dać przykład? – yegor256

+0

Kliknij poniższy link, aby zobaczyć przykłady. Pierwszy przykładowy blok pokazuje przypadek użycia '1' jako wartości początkowej. –

Odpowiedz

11

Reduce, z małym dostosowaniem:

(reduce #(f %2 %1) 1 [a b c]) 
+0

@ A.Webb Rzeczywiście, iterowane aplikacje 'f' przyjmują elementy sekwencji jako pierwszy argument, a nie drugi. –

2
(reduce (fn [acc x] (f x acc)) 1 [a b c d]) 
Powiązane problemy