Et je veux dire que dans le même sens qu'un C/Java for
est juste une syntaxe funky pour une boucle while
.Les "continuations" de Scala sont-elles simplement une syntaxe géniale pour définir et utiliser les fonctions de rappel?
Je me souviens encore quand j'ai appris la boucle for
en C, l'effort mental qui devait comprendre la séquence d'exécution des trois expressions de contrôle par rapport à l'instruction de boucle. Il me semble que le même type d'effort doit être appliqué pour comprendre les Continuations (en Scala et probablement d'autres langues).
Et puis il y a la question de suivi évidente ... si oui, alors à quoi ça sert? Il semble que beaucoup de douleur (complexité du langage, erreurs de programmation, programmes illisibles, etc) pour aucun gain.
Oui, mais .... la fonction de continuité Scala ne fait PAS la transformation pour vous dans les coulisses. En fait, c'est juste le contraire, cela vous oblige à écrire du code dans un style continu-passing-pass fou et difficile à lire et à le transformer en bytecode JVM de style impératif. Où est l'avantage? –
http://lamp.epfl.ch/~rompf/continuations-icfp09.pdf (le document sur les continuations scala) explique comment il utilise la transformation CPS pour implémenter 'shift' et' reset'. Il y a beaucoup de détails, mais en gros, l'idée consiste à inverser toutes les définitions et applications entre un 'shift' et un' reset'. Ce serait un code assez moche si écrit à la main. – hzap
Alex, votre commentaire est incorrect. Le but du plugin continuations est que vous n'ayez pas à écrire votre code dans le style de continuation-passing. Je pense que vous êtes confus au sujet de ce qu'est le "style de continuation-passing". –