for 文を setTimeout に変換する(継続風)

for 文を setTimeout に変換する - IT戦記が楽しそうだったので、久しぶりにJavaScriptを書いてみた。
継続風に書くと、通常のforループとsetTimeout付きforループが同じようになります。
JavaScriptも楽しいなぁ。また、書きたい。

// 通常版
forloop(0, 3, 1)(function(i, cont){
    forloop(0, 7 ,1)(function(j, cont){
	console.log('a' + i + "-" + j);
	cont();
    }, cont);
}, function(){});

// timeout版
to_forloop(0, 3, 1)(function(i, cont){
    to_forloop(0, 7 ,1)(function(j, cont){
	console.log('a' + i + "-" + j);
	cont();
    }, cont);
}, function(){});

forloopとto_forloopはこんな感じです。

// from http://d.hatena.ne.jp/amachang/20071108/1194501306
var to = function() {
  var f = Array.prototype.shift.apply(arguments);
  args = arguments;
  return setTimeout(function() { f.apply(null, args) }, 10);
};

function forloop(i, j, k){
   var l = i;
   var a = function a(f, cont){
       if (l >= j) {
           return cont();
       }
       f(l, function(){
           l += k;
           a(f, cont);
       });
   }
   return a;
}

function to_forloop(i, j, k){
   var l = i;
   var a = function a(f, cont){
       if (l >= j) {
           return cont();
       }
       to(f, l, function(){
           l += k;
           a(f, cont);
       });
   }
   return a;
}