Ist es für reine Funktionen in Haskell möglich, lokale Kopien von Variablen zu mutieren, so wie clojure es in Functional Programming Is A Scam! by David Nolen? Wenn nicht, was sind die Gründe dafür, und wenn ja, gibt es irgendwelche Beispiele, auf die mich jemand hinweisen könnte? Eine ähnliche Frage wurde in Functions that look pure to callers but internally use mutation gestellt und der allgemeine Konsens schien zu sein, dass es für reine Funktionen in Ordnung sei, eine Mutation durchzuführen, solange die Mutationen an lokalen Kopien von Variablen durchgeführt wurden (dh die Wirkung der Mutation tut dies nicht) entkomme der Funktion und habe eine nicht-lokale Wirkung).Ist es bei reinen Funktionen in Haskell möglich, lokale Kopien von Variablen zu mutieren?
Die Frage stellt sich, wenn ich die Blase Art in Shen übersetzt (Local mutation, global mutation, mutable datastructures, Bubblesort in Qi), die nicht mutieren der Liste, auf Common Lisp und im Vergleich zum Bubblesort in Bubblesort in Common Lisp, die die Liste nicht mutieren. Das Ergebnis war, dass ich (in Common Lisp) feststellte, dass die Version, die die Liste mutierte, für sehr große Listen wesentlich schneller war als die Version, die die Liste nicht mutierte.
Danke. Das sumST-Beispiel im "Haskell Wiki" macht deutlich, wie eine reine Funktion lokale Mutationen einsetzen kann. – artella