coffee scriptでrange([z...y])を使う際の注意
jsのコードをcoffeeで書き直してた際に見つけた。
やる前からだいたいわかってたんだけどjavascriptに無限リストはないので
Array::zip = (arr) -> base = if (this.length < arr.length) then this else arr [0...base.length].map((i) -> [this[i], arr[i]] , this)
と、書くと
Array.prototype.zip = function(arr) { var base, _i, _ref, _results; base = this.length < arr.length ? this : arr; return (function() { _results = []; for (var _i = 0, _ref = base.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); } return _results; }).apply(this).map(function(i) { return [this[i], arr[i]]; }, this); };
と変換されて、きっと巨大な配列だと爆死する