Y quiero decir que en el mismo sentido que un C/Java for
es solo una sintaxis funky para un loop while
.¿Las "continuación" de Scala son solo una sintaxis funky para definir y usar las funciones de devolución de llamada?
Todavía recuerdo cuando aprendí por primera vez sobre el for
bucle en C, el esfuerzo mental que tuvo que entrar en la comprensión de la secuencia de ejecución de las tres expresiones de control relativas a la instrucción de bucle. Me parece que se debe aplicar el mismo tipo de esfuerzo para entender las Continuaciones (en Scala y supongo que probablemente en otros idiomas).
Y luego está la obvia pregunta de seguimiento ... si es así, ¿cuál es el punto? Parece mucho dolor (complejidad del lenguaje, errores del programador, programas ilegibles, etc.) sin ganancia.
Sí, pero .... la función de continuación de Scala NO hace la transformación detrás de escena. En realidad, es todo lo contrario, te hace escribir código en un estilo de continuación de pasaje de continuación difícil de leer y lo transforma en un bytecode JVM de estilo imperativo. ¿Dónde está la ventaja? –
http://lamp.epfl.ch/~rompf/continuations-icfp09.pdf (el documento de continuación de scala) habla sobre cómo usa la transformación CPS para implementar 'shift' y' reset'. Tiene muchos detalles valientes, pero básicamente la idea implica voltear todas las definiciones y aplicaciones de funciones entre un 'shift' y un' reset' al revés. Este sería un código bastante feo si se escribe a mano. – hzap
Alex, tu comentario es incorrecto. El objetivo del complemento de continuación es que * no * tiene que escribir su código en el estilo de continuación de paso. Creo que estás confundido acerca de lo que es el "estilo de continuación de pase". –