Skip to content

Instantly share code, notes, and snippets.

@darkf
Created October 16, 2011 03:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save darkf/1290471 to your computer and use it in GitHub Desktop.
Save darkf/1290471 to your computer and use it in GitHub Desktop.
an attempt at javascript continuation passing style conversion from scheme
function cps_prim(f) {
return function() {
var r = arguments.reverse();
return r[0]( f.apply(this, arguments.slice(1).reverse()) );
}
}
function _sqrt() { return cps_prim(function(x) { return 6; }); }
function _mul(a, b) { return a*b; }
function mul() { return cps_prim(_mul); }
function pyth(x, y, k) {
return mul(x, x, function(x2) {
return mul(y, y, function(y2) {
return mul(x2, y2, function(x2py2) {
return _sqrt(x2py2, k); });
});
});
}
console.log("begin");
pyth(20, 50, function(r) { console.log("r: "); console.log(r); });
console.log("end");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment