はじめに
javascriptで関数型ちっくにFizzBuzzをやりたいなあと思い、まずは1〜Nまでの配列を作ってみるかと思いました。こう言う場合haskellなら
[1...100]
みたいにスマートに書けるのですが、javascriptでも似たようなことができないのか?と思います。少し考えてみて、Ramda.timesを使えば上手くいきそうだなと思いました。
コード
R.times((i)=>i+1, 100);
例のごとくRamdaを使っています。これで1〜100までの配列が作れます。もう少し抽象的に書くと、
R.times((i)=>1+初期値, 最大値)
となります。
解説
R.timesはある関数をn回呼び出して、その結果群を配列として返すというものです。
R.times(
(i)=>{} /* 呼び出される関数、iには0から始まる呼び出し回数が入る */,
n/* 繰り返しの回数*/)
上で書いた式は(i)=>i+1となっていましたが、これはループ回数に+1を足したものを返すという意味になります。ループは0からはじまるので、+1をしている訳です。
最後に
調べたらもっとスマートに書けそうな方法はありそうです。見つけ次第、追記していこうと思います。