function printArray(array) {
for (var i = 0; i < array.length; i++)
print(array[i]);
}
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
forEach(["Wampeter", "Foma", "Granfalloon"], print);
function sum(numbers) { var total = 0; forEach(numbers, function (number) { total += number; }); return total; }
show(sum([1, 10, 100]));
function negate(func) { return function(x) { return !func(x); }; }
var isNotNaN = negate(isNaN); show(isNotNaN(NaN));
function makeAddFunction(amount) { function add(number) { return number + amount; } return add; }
var addTwo = makeAddFunction(2); var addFive = makeAddFunction(5); show(addTwo(1) + addFive(1));
function map(func, array) {
var result = [];
forEach(array, function (element) {
result.push(func(element));
});
return result;
}
show(map(Math.round, [0.01, 2, 9.89, Math.PI]));
function reduce(combine, base, array) { forEach(array, function (element) { base = combine(base, element); }); return base; }
function add(a, b) { return a + b; }
function sum(numbers) { return reduce(add, 0, numbers); }
show(sum([1,2,3,4,5]));
function compose(func1, func2) { return function() { return func1(func2.apply(null, arguments)); }; }
function negate(a) {
return !a;
}
var isNotNaN = compose(negate, isNaN);
show(isNotNaN(NaN));