Bei einer Tail-Call-Optimierung gibt eine Funktion das Ergebnis einer aufgerufenen Funktion direkt zurück, um die Zuweisung eines neuen Stack-Frames zu vermeiden. Es ist besonders nützlich in rekursiven Funktionen.
Ich sehe mehrere Beispiele für die Implementierung von append einem Element in eine Liste, aber alle verwenden keine Tail-Rekursion . Wie implementiert man eine solche Funktion in einem funktionalen Stil?
%Vor%
Offenlegung: Dies kam in FsCheck, einem F # Random Testing Framework, das ich behalte. Ich habe eine Lösung, aber ich mag sie nicht. Außerdem verstehe ich das Problem nicht - es wurde lediglich umgangen.
Eine ziemlich standardisierte Implemen...
Ich habe Probleme mit dem Fixpunktkombinator in F #:
%Vor%
(Dieser Code soll nur das Problem demonstrieren, er wurde speziell geschrieben, damit der generierte IL-Code leicht zu lesen ist.)
Dieser Code - wenn er mit optimierten Optimierun...
Wie ist der aktuelle Stand der Tail Call Optimization (TCO) Implementierung für Mono (2.11)? Lies irgendwo, dass die Codebasis geändert werden müsste, um eine callee-pops-arguments-Konvention zu verwenden. Was ist der Status dieser Änderung? Ist...
Ich habe gerade Haskell vor zwei Tagen angefangen, also bin ich mir noch nicht sicher, wie ich meinen Code optimieren soll.
Als Übung habe ich foldl und foldr neu geschrieben (ich gebe foldl hier, aber foldr ist gleich, ersetze l...
In diesem Gespräch , in den ersten 8 Minuten, erklärt Runar, dass Scala Probleme mit der Eliminierung von Tail Calls hat. Das lässt mich fragen, ob F # ähnliche Probleme hat. Wenn nicht, warum nicht?