Und ich meine, dass in dem gleichen Sinne, dass ein C/Java for
ist nur eine funky Syntax für eine while
Schleife.Sind Scala "Fortsetzungen" nur eine funky Syntax zum Definieren und Verwenden von Callback-Funktionen?
Ich erinnere mich noch beim ersten Lernen über die for
Schleife in C, die geistige Anstrengung, die in das Verständnis der Ausführungsreihenfolge der drei Steuerausdrücke relativ zur Schleifenanweisung gehen musste. Es scheint mir, dass die gleichen Anstrengungen unternommen werden müssen, um Continuations zu verstehen (in Scala und vermutlich anderen Sprachen).
Und dann gibt es die offensichtliche Follow-up-Frage ... wenn ja, was ist der Sinn? Es scheint eine Menge Schmerz zu sein (Sprachkomplexität, Programmierfehler, unlesbare Programme usw.), ohne Gewinn.
Ja, aber ... die Scala-Fortsetzungsfunktion führt NICHT die Transformation für Sie hinter den Kulissen durch. Eigentlich ist es genau das Gegenteil, es lässt Sie Code in einem verrückten, schwer lesbaren Fortsetzungsmodus schreiben und wandelt ihn in einen regulären JVM-Bytecode im Imperativ-Stil um. Wo ist der Vorteil? –
http://lamp.epfl.ch/~romppf/continuations-icfp09.pdf (das Scala-Fortsetzungs-Papier) spricht darüber, wie es die CPS-Transformation verwendet, um 'shift' und' reset' zu implementieren. Es hat viele Details, aber im Grunde geht es darum, alle Definitionen und Funktionsanwendungen zwischen "Shift" und "Reset" umzudrehen. Dies wäre ein ziemlich hässlicher Code, wenn er von Hand ausgeschrieben wird. – hzap
Alex, dein Kommentar ist falsch. Der ganze Sinn des Fortsetzungs-Plugins ist, dass Sie * Ihren * Code nicht im Fortsetzungsmodus schreiben müssen. Ich glaube, Sie sind verwirrt darüber, was "Fortsetzungsstil" überhaupt ist. –