E intendo quello nello stesso senso in cui un C/Java for
è solo una sintassi funky per un ciclo while
.Le "continuazioni" di Scala sono solo una sintassi funky per la definizione e l'uso delle funzioni di callback?
Ricordo ancora quando ho iniziato a conoscere il ciclo for
in C, lo sforzo mentale che è stato necessario per comprendere la sequenza di esecuzione delle tre espressioni di controllo relative all'istruzione del ciclo. A me sembra che debba essere applicato lo stesso tipo di sforzo per comprendere le Continuazioni (in Scala e credo che probabilmente altre lingue).
E poi c'è l'ovvia domanda di follow-up ... se sì, allora qual è il punto? Sembra un sacco di dolore (complessità della lingua, errori del programmatore, programmi illeggibili, ecc.) Senza alcun guadagno.
Sì, ma .... la funzione di continuazione di Scala NON esegue la trasformazione per te dietro le quinte. In realtà è esattamente l'opposto, ti fa scrivere codice in pazzesco stile di passaggio continuo e difficile da leggere e lo trasforma in un normale bytecode JVM in stile imperativo. Dov'è il vantaggio? –
http://lamp.epfl.ch/~rompf/continuations-icfp09.pdf (il documento di continuation di scala) parla di come usa la trasformazione CPS per implementare 'shift' e' reset'. Ha molti dettagli grintosi, ma fondamentalmente l'idea coinvolge tutte le definizioni e le applicazioni di funzione tra uno 'shift' e un' reset' dentro e fuori. Questo sarebbe un codice piuttosto brutto se scritto a mano. – hzap
Alex, il tuo commento non è corretto. L'intero punto del plugin di continuazione è che * non * devi scrivere il tuo codice in stile di passaggio continuo. Penso che tu sia confuso riguardo a cosa sia lo "stile di passaggio continuo". –