Często potrzebuję pewnego rodzaju rozszerzonego reduce
, kiedy muszę przetworzyć przedmiot na czas (jak zmniejszyć), zebrać jakiś wynik (np. Zmniejszyć), ale zrobić proces oparty na poprzedni element sekwencji (w przeciwieństwie do zmniejszenia).Clojure: redukuj z trzema parametrami
Na przykład (głupawy), dodaj 1 do akumulatora, jeśli zarówno bieżący element, jak i poprzedni, są równe i odejmują jeden z nich są nieparzyste. To tylko głupi przypadek, ale często napotykam na tego rodzaju problemy. Generalnie robię wektor jako akumulator, tak, że pierwszy element jest rzeczywistą agregacją, a drugi jest poprzednim elementem. To nie jest zbyt eleganckie i z pewnością pełne gadatliwości.
Czy istnieje podstawowa funkcja, która może pomóc w takich przypadkach? Jaki jest najbardziej idiomatyczny sposób radzenia sobie z takim problemem? Dzięki
proszę napisać przykład taki jak ten. input: xxx output: yyy – blueiur