【Ramda/js】関数型Ramdaのざっくりな使い方まとめ
Ramdaの公式ドキュメントで動きはわかるのですが、
ざっくり伝えられている記事がないようなので、
主要なものだけ書きました。
なぜRamdaなのかはこちら(Lo-Dashとの比較箇所とか)
ドキュメントのシグネチャにまだ親しみがなかったら→ 「Ramda.js シグネチャの読み方」
※随時このページに追加予定
compose
https://ramdajs.com/docs/#compose
![compose【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)](https://kenjimorita.jp/wp-content/uploads/2017/08/1-1024x372.png)
ざっくりいうと・・・
R.composeで返された関数に任意の引数を渡す(1)とR.compose()内に渡した関数のうち一番右(上記の場合stri)からその引数を受け取り、処理。
その返り値がさらに左の関数(age)の引数となり処理されます。
curry
https://ramdajs.com/docs/#curry
![【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)](https://kenjimorita.jp/wp-content/uploads/2017/08/c6b7264fef9eb122e9f56992d98ac700-1024x273.png)
ざっくりいうと・・・
R.curryに渡された関数(addany)がcurredされた関数として返ってきます。
これを例えば
![【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)](https://kenjimorita.jp/wp-content/uploads/2017/08/8c04d332e73769cf0eecdf9db474a4b9-1024x317.png)
このように渡す引数は任意で(上記の場合2つ)、返値は残りの引数分のカリーされた関数です。
pipe
https://ramdajs.com/docs/#pipe
![【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ](https://kenjimorita.jp/wp-content/uploads/2017/08/1068448bcf2b2b6ca7a03540b4f46187-1024x169.png)
ざっくりいうと・・・
R.composeとは違って処理は左から右へとされる。
pipeの結果はcurredされた関数は自動的に返さない。
上記の場合fは3の4乗(81)をした結果を次に渡し+1、それを渡し+10して出力している。
where
https://ramdajs.com/docs/#where
![【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ](https://kenjimorita.jp/wp-content/uploads/2017/08/0cd237226339ae4974fc094da62bc82e-1024x409.png)
ざっくりいうと・・・
テストしたいオブジェクトを渡して評価を得るために使用する。R.where内でオブジェクトのkeyに対してBooleanを返す関数( プレディケート関数:引数を元にtrueかfalseかを特定する関数)を定義する。
オブジェクトのkey値を比較して全てtrueの場合、結果はtrue。R.gtはR.__に渡ってくる11の方が大きかったらtrueを返し、R.ltは19の方が小さかったらtrueを返している。
curryN
https://ramdajs.com/docs/#curryN
![【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ](https://kenjimorita.jp/wp-content/uploads/2017/08/143733aabcc2e5adb7da5b131aa7aaf3-1024x411.png)
ざっくりいうと・・・
第一引数に渡した数値を引数に取って第二引数で渡した関数を実行するカリー化された関数を返す
range
https://ramdajs.com/docs/#range
![【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ](https://kenjimorita.jp/wp-content/uploads/2017/08/efe37cdaa3897f3b0592e60372e52f18-1024x489.png)
ざっくりいうと・・・
第一引数に渡した数値から第二引数の数値までの範囲を配列の要素として返す
pathOr
https://ramdajs.com/docs/#pathOr
ざっくりいうと・・・
第一引数はundfinedなどプロパティ値がファルシーな場合のデフォルト値、第二引数にはオブジェクトの階層、参照順に配列要素にする。
--------------------WIP----------------------------
chain
ざっくりいうと・・・
fa
sequence
https://ramdajs.com/docs/#sequence
ざっくりいうと・・・
fa
tap
https://ramdajs.com/docs/#tap
ざっくりいうと・・・
fa
traverse
https://ramdajs.com/docs/#traverse
ざっくりいうと・・・
fa