Eine Akkumulatorfunktion in Clojure schreiben

7

Ich würde gerne wissen, wie man das Akkumulator-Beispiel schreibt, das im Rache der Nerds Essay enthalten ist. Es ist leicht zu verstehen, wie es funktioniert, aber ich schaffe es nicht, es in Clojure neu zu erstellen - es akkumuliert nicht , sondern gibt nur die Summe von i und dem anfänglichen gegebenen Wert von n zurück.

Der Schlüssel befindet sich in incf (in der Common Lisp-Version) oder + = (in JavaScript).

Mit anderen Worten: Wie ändert man den Zustand einer referenzierten Funktion? Ich habe einige Beispiele für mutierende Variablen gesehen, aber sie sehen nicht genau richtig aus , oder?

    
vemv 09.12.2011, 07:48
quelle

1 Antwort

22

Doooo itttttt nicht! Sparen Sie sich, bevor es zu spät ist! Mutation ohne Grund ist nicht etwas, das Clojure ermutigt, also ist es natürlich nicht so bequem wie es im allgemeinen Lispeln wäre.

Aber im Ernst, dies ist ein klassisches Beispiel für die Erklärung von Schließungen, und obwohl es in Clojure nicht wirklich sehr nützlich ist, ist es schön, die Übersetzung zu kennen. Sie müssten etwas schreiben wie:

%Vor%     
amalloy 09.12.2011, 08:00
quelle

Tags und Links