3.6 Composing Continuations

https://github.com/eu81273/jsfiddle-console

by dimitrs_papadimitriou

HTML

<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>

JavaScript

var square = (x) => {
            return resolve => {
                setTimeout(() => {
                    resolve(x * x)
                }, 1000);
            }
        };

        square(2)(r => {
            square(r)(r1 => {
                console.log(r1)
            });
        });

        var bind = (cont1) => (cont2) => {
            return x => resolve => {
                cont1(x)(r1 => cont2(r1)(r2 => resolve(r2)))
            }
        }
        bind(square)(bind(square)(square)(3))(console.log)