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

questionAnswers(2)

yourAnswerToTheQuestion