Async/await a.k.a Continuation Co- Monad in JavaScript

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

by dimitrs_papadimitriou

HTML

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

JavaScript

//Async/await a.k.a Continuation Co- Monad in JavaScript
//https://medium.com/@dimpapadim3/async-await-a-k-a-continuation-co-monad-in-javascript-3593f0092413

const toCont = v => callback => callback(v);

var bind = (cont1, func) => (c => cont1(contResult => func(contResult)(c)));

//the initial 
toCont(x => x * x)
  (y => toCont(y(4))
    (t => console.log(t)));


//rewriting it with the bind function
var contComposition = bind(toCont(x => x * x), y => toCont(y(4)));
//this is still not evaluated. its a deffered computation 

//here we actually collapse the continuation structure and observe the result 
contComposition(t => console.log(t))