ich sehen kann, wie sie es tut auffoldr und foldl in DrRacket
(foldl * 1 '(1 2 3 4 5)) == 120
(foldr * 1 '(1 2 3 4 5)) == 120
aber ich kann nicht herausfinden, wie es 2 für bekommt (foldl - 1 ‚(1 2 3 4 5)) = 2 =
ich habe gedacht (foldl - 1 ‚(1 2 3 4 5)) wäre ((((1-1) -2) -3) -4) bis 5), eine negative Zahl . Was habe ich verpasst?
I kann tho warum (foldl + 1 ‚(1 2 3 4 5)) == 16
Siehe auch [diese Frage] (https://stackoverflow.com/questions/8778492/why-is-foldl-defined-in-a-strange-way-in-racket) und die Antworten, warum das ist. Es gibt Argumente für beide Arten der Definition 'foldl', aber dieser wurde für Schläger gewählt, weil der Speicher-letzte Version mehr im Einklang mit' foldr' ist, weil dann beide Funktionen übernehmen, die den Speicher als das letzte Argument. –
auch wissen, dass Scheme (wie der Standard AKA R6RS vorerst) eine Bibliothek mit den Verfahren hat 'klappbare right' und' klappbare left' wo die Platzierung des Akkumulator ändert. Ich benutze solche, wie sie selten [SRFI-1] (http://srfi.schemers.org/srfi-1/srfi-1.html) hat eine Menge Unterstützung und verwendet die gleiche Akku Platzierung für 'fold' und' klappbare rechts ', sogar von [' #! Racket'] (https://docs.racket-lang.org/srfi/srfi-1.html). – Sylwester