Clojure: zmniejsz za pomocą trzech parametrów
Często potrzebuję czegoś w rodzaju rozszerzeniareduce
ilekroć muszę przetworzyć przedmiot w czasie (np. zmniejszyć), zgromadzić jakiś wynik (np. zmniejszyć), ale wykonać proces na podstawie poprzedniego elementu sekwencji (w przeciwieństwie do zmniejszania).
Na przykład (głupi), dodaj 1 do akumulatora, jeśli zarówno bieżący przedmiot, jak i poprzedni są równe i odejmij jeden z nich, jest nieparzysty. To tylko głupia sprawa, ale często spotykam się z tego rodzaju problemami. Generalnie tworzę wektor jako akumulator, tak że pierwszy element jest rzeczywistą agregacją, a drugi jest poprzednim elementem. To nie jest bardzo eleganckie i na pewno gadatliwe.
Czy w takich przypadkach istnieje podstawowa funkcja pomocy? Jaki jest najbardziej idiomatyczny sposób radzenia sobie z takim problemem? Dzięki