Bei der Lektüre des berühmten SICP stellte ich fest, dass die Autoren es eher ablehnen, die Aufgabenerklärung zu Schema in Kapitel 3 einzuführen. Ich las den Text und verstehe, warum sie sich so fühlen.
Da Schema die erste funktionale Programmiersprache ist, die ich jemals kenne, wundert es mich, dass es einige funktionale Programmiersprachen gibt (natürlich nicht Schema), die ohne Zuweisungen auskommen.
Verwenden wir das Beispiel aus dem Buch, das bank account
Beispiel. Wie geht das, wenn es keine Zuweisungsanweisung gibt? Wie ändere ich die balance
Variable? Ich frage das, weil ich weiß, dass es einige sogenannte reine Funktionssprachen gibt, und nach der vollständigen Theorie von Turing kann dies auch getan werden.
Ich habe C, Java, Python gelernt und benutze in jedem Programm, das ich geschrieben habe, viele Aufgaben. Es ist also wirklich eine aufschlussreiche Erfahrung. Ich hoffe wirklich, dass jemand kurz erklären kann, wie Zuweisungen in diesen funktionalen Programmiersprachen vermieden werden und welche tiefgreifenden Auswirkungen (falls vorhanden) dies auf diese Sprachen hat.
Das oben erwähnte Beispiel ist hier:
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds")))
Dies änderte die balance
von set!
. Für mich sieht es sehr nach einer Klassenmethode aus, um das Klassenmitglied zu wechseln balance
.
Wie gesagt, ich kenne mich mit funktionalen Programmiersprachen nicht aus. Wenn ich also etwas Falsches über sie gesagt habe, kann ich Sie gerne darauf hinweisen.
set!
andere Funktionen zu verwenden, die mit a enden!
. Sobald Sie damit vertraut sind, sollte der Übergang zu Pure FP einfacher sein.