Próbuję łańcucha kilka funkcji w Clojure:Jak łańcuchować wiele funkcji?
(f4 (f3 (f2 (f1 foo))))
Czy istnieje wygodny cukier składnię tego? Coś jak:
(with-all-of-them foo f1 f2 f3 f4)
Próbuję łańcucha kilka funkcji w Clojure:Jak łańcuchować wiele funkcji?
(f4 (f3 (f2 (f1 foo))))
Czy istnieje wygodny cukier składnię tego? Coś jak:
(with-all-of-them foo f1 f2 f3 f4)
Zastosowanie ->
makro.
(-> foo f1 f2 f3 f4)
Albo reduce
:
(reduce #(%2 %1) foo [f1 f2 f3 f4])
Sztuczka 'reduce' jest urocza, tylko jeśli trochę barokowa :) – vemv
@vemv Myślę, że' -> 'jest urocze. Opcja 'reduce' wyraźnie pokazuje wzorzec operacyjny i, w przeciwieństwie do makra wątku, z przyjemnością przyjmuje sekwencję nieznaną podczas kompilacji. –
Jest threading macro ->
:
(-> foo f1 f2 f3 f4)
Obok Figwheel to naprawdę najbardziej niesamowita rzecz, jaką widziałem dzisiaj. –
Właściwie Twój opis with-all-of-them
jest bardzo blisko comp
, z wyjątkiem tego comp
zwraca funkcję, należy zadzwonić pod:
(f4 (f3 (f2 (f1 foo))))
== ((comp f4 f3 f2 f1) foo)
Tak, with-all-of-them
może być im plementowane w następujący sposób:
(defn with-all-of-them [arg & fs]
((apply comp fs) arg))
czy masz na myśli komp? –
zobacz http://stackoverflow.com/questions/11918554/can-clojure-evaluate-a-chain-of-mix- -functions- and-return--partial-funct i zobacz, czy to ci pomoże –