If I compile this CoffeeScript:
    funcs = ((=> console.log i) for i in [0..2])                                                                                                                                                                                          
    funcs[0]()  // Prints 3
    funcs[1]()  // Prints 3
    funcs[2]()  // Prints 3
it produces this JavaScript:
    (function() {
      var funcs, i;
      funcs = (function() {
        var _i, _results,
          _this = this;
        _results = [];
        for (i = _i = 0; _i <= 3; i = ++_i) {
          _results.push(function() {
            return console.log(i);
          });
        }
        return _results;
      }).call(this);
      funcs[0]();
      funcs[1]();
      funcs[2]();
      funcs[3]();
    }).call(this);
I would think it would instead have:
          _results.push((function(i) {
             return function() {
              return console.log(i);
          }})(i));
Could someone explain why it's not doing that?