window.fold = function(list, zero, op) {
var r = zero;
for (var i = 0; i < list.length; i++) {
r = op(r, list[i])
}
return r;
};
window.flatten = function(listOfLists) {
return fold(listOfLists, [], function(s1, s2) { return s1.concat(s2)})
};
Basically, I do map/reduce.