function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
function map(func, array) {
var result = [];
forEach(array, function (element) {
result.push(func(element));
});
return result;
}
var op = {
"+": function(a, b){return a + b;},
"==": function(a, b){return a == b;},
"===": function(a, b){return a === b;},
"!": function(a){return !a;}
};
function asArray(quasiArray, start) {
var result = [];
for (var i = (start || 0); i < quasiArray.length; i++)
result.push(quasiArray[i]);
return result;
}
function partial(func) {
var fixedArgs = asArray(arguments, 1);
return function() {
return func.apply(null, fixedArgs.concat(asArray(arguments)));
};
}
function square(x) {return x * x;}
map(partial(map, square), [[10, 100], [12, 16], [0, 1]]);
Wszystko rozumiem, wszystko :) nawet prawie kumam funkcję partial :)
ale za diabła nie rozumiem jakim cudem można było przekazać funkcję square w tym miejscu :(
czy może ktoś mi to wyjaśnij - poproszę