Instalá un entorno Node como se explica acá. La parte de Express la podés obviar.
El primer CPS que vamos a hacer es muy fácil, por eso no figura en este repo.
function suma(x, y, cont) {
cont(x + y);
}
Un ejemplo fácil de una función recursiva, escrita en CPS.
Para demostrar el poder de CPS, algunos ejemplos de otros patrones de comunicación implementados mediante éste:
- No determinismo: Cómo parecerse a Prolog, o cómo usar listas sin tener listas.
- Falla: Como implementar compuaciones que pueden no tener resultado. Más adelante veremos es que este es el comportamiento de Maybe, ¡pero sin modelarlo!
- Excepciones: Cómo puedo modelar excepciones en un lenguaje que no las tiene. O cómo hacerlas más flexibles que las que vienen con JavaScript.
Un ejemplo que funciona de como modelar Cuentas y Transferencias en estilo directo. Nada loco que no puedas hacer sabiendo de objetos en JS, pero es la base del ejempo siguiente
El ejemplo anterior, convertido en CPS. Y cómo con unos mínimos cambios y la magia del setTimeout podemos romper absolutamente todo y ver que en JS también hay condiciones de carrera.
Ah, pero todo tiene solución. Por suerte existen las excepciones ....¿no?