A little challenge today: create a JS function that turns its arguments into a list of pairs. Actually, the brief was “using Ramda” but I ended up not doing that:
function basePairwise(xs) {
if (xs.length == 0) return [];
if (xs.length == 1) return [[xs[0], undefined]];
return [[xs[0], xs[1]]].concat(basePairwise(xs.slice(2)));
}
function pairwise(...xs) {
return basePairwise(xs);
}
One of the nice things about JavaScript (I won’t say that often, so note the date) is the introspective nature: the fact that I get to just look at the way a function was called, rather than saying “you must use exactly these types and this arity always”. Here, I’ve done that with the JS spread operator: I could have used the arguments
pseudo-list for only a little more work.