Variable Bezüge in lisp

Einen anderen Neuling (Common) LISP Frage:

Grundsätzlich in den meisten Programmiersprachen gibt es ein Mittel, Funktionen zu erhalten, Referenzen auf Variablen, anstatt nur Werte, das heißt, die übergabe per Referenz statt als Wert übergeben werden. Sagen wir mal, der Einfachheit halber, ich will schreiben Sie eine LISP-Funktion, erhält eine variable und erhöht den Wert der Variablen um eins:

(defun increase-by-one (var)
  (setf var (+ var 1)))

Sich jetzt natürlich das problem ist, dass diese Funktion erhöht nur den Wert der Kopie der Variablen auf dem stack, nicht die eigentlichen original-variable. Ich habe auch versucht, um den Effekt zu erzielen durch die Verwendung von Makros, ohne viel Erfolg, obwohl ich das Gefühl, dass die Verwendung von Makros ist der richtige Weg zu gehen.

Ich traf diese Wand die ganze Zeit in LISP, und ich bin sicher, es muss ein Weg, um es oder gibt es vielleicht einen völlig anderen Ansatz, um dieses problem in LISP habe ich nicht daran gedacht? Wie sind Dinge wie diese sind in LISP?

BEARBEITEN: Mehrere Leute vorgeschlagen hat, mit incf. Ich habe nur dieses Beispiel zu demonstrieren, das problem in einer einfachen Art und Weise, war ich nicht eigentlich auf der Suche nach reimplementing incf. Aber danke für die Vorschläge sowieso.

  • Sie sagen "die meisten Programmier-Sprachen", sondern es gibt Sprachen mit einer solchen Funktion anderes als C++ und Perl?
  • Pascal ist ein anderes
Schreibe einen Kommentar