Clojure: Mit drei Parametern reduzieren

Oft brauche ich eine Art Erweiterungreduce Immer wenn ich einen Gegenstand zur Zeit bearbeiten muss (wie Reduzieren), akkumuliere ich ein Ergebnis (wie Reduzieren), aber mache den Vorgang basierend auf dem vorherigen Gegenstand der Sequenz (im Gegensatz zu Reduzieren).

Zum Beispiel (eine dumme), addiere 1 zum Akkumulator, wenn sowohl der aktuelle als auch der vorherige Gegenstand gerade sind, und subtrahiere einen von ihnen, der ungerade ist. Dies ist nur ein dummer Fall, aber ich bin oft auf diese Art von Problemen gestoßen. Ich mache im Allgemeinen einen Vektor als Akkumulator, so dass das erste Element die reale Aggregation und das zweite das vorherige Element ist. Dies ist nicht sehr elegant und sicherlich wortreich.

Gibt es eine Kernfunktion, die in solchen Fällen helfen kann? Was ist der idiomatischste Weg, um mit einem solchen Problem umzugehen? Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage