再帰でmap

関数プログラミングの練習として。確かにreturnはうっとうしいかも。
concat()って破壊的だったっけ?
head()でnullを返すのがなんか気になる。いいのかな?


function head(l) {
return (l.length > 0) ? l[0] : null;
}

function tail(l) {
return (l.length > 0) ? l.slice(1) : ;
}

function map(f, l) {
return (l.length > 0) ? [f(head(l))].concat(map(f, tail(l))) : ;
}

print(map(function(i) {return i * 2}, [1, 2, 3]));