【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ

【Ramda/js】関数型Ramdaのざっくりな使い方まとめ

image

Ramdaの公式ドキュメントで動きはわかるのですが、
ざっくり伝えられている記事がないようなので、
主要なものだけ書きました。

なぜRamdaなのかはこちら(Lo-Dashとの比較箇所とか)

ドキュメントのシグネチャにまだ親しみがなかったら→ 「Ramda.js シグネチャの読み方」

※随時このページに追加予定

compose

https://ramdajs.com/docs/#compose

compose【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)
compose

ざっくりいうと・・・

R.composeで返された関数に任意の引数を渡す(1)とR.compose()内に渡した関数のうち一番右(上記の場合stri)からその引数を受け取り、処理。
その返り値がさらに左の関数(age)の引数となり処理されます。

compose


curry

https://ramdajs.com/docs/#curry

【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)
【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)

ざっくりいうと・・・

R.curryに渡された関数(addany)がcurredされた関数として返ってきます。

これを例えば

【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)
【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ(Sample付)

このように渡す引数は任意で(上記の場合2つ)、返値は残りの引数分のカリーされた関数です。

curry


pipe

https://ramdajs.com/docs/#pipe

【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ
【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ

ざっくりいうと・・・

R.composeとは違って処理は左から右へとされる。
pipeの結果はcurredされた関数は自動的に返さない。
上記の場合fは3の4乗(81)をした結果を次に渡し+1、それを渡し+10して出力している。

pipe


where

https://ramdajs.com/docs/#where

【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ
【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ

ざっくりいうと・・・

テストしたいオブジェクトを渡して評価を得るために使用する。R.where内でオブジェクトのkeyに対してBooleanを返す関数( プレディケート関数:引数を元にtrueかfalseかを特定する関数)を定義する。
オブジェクトのkey値を比較して全てtrueの場合、結果はtrue。R.gtはR.__に渡ってくる11の方が大きかったらtrueを返し、R.ltは19の方が小さかったらtrueを返している。

where

curryN

https://ramdajs.com/docs/#curryN

【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ
【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ

ざっくりいうと・・・

第一引数に渡した数値を引数に取って第二引数で渡した関数を実行するカリー化された関数を返す

curryN

range

https://ramdajs.com/docs/#range

【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ
【Ramda/js】関数型Ramda.jsのざっくりな使い方まとめ

ざっくりいうと・・・

第一引数に渡した数値から第二引数の数値までの範囲を配列の要素として返す

range

pathOr

https://ramdajs.com/docs/#pathOr
スクリーンショット 2017-08-15 19.58.13
ざっくりいうと・・・

第一引数はundfinedなどプロパティ値がファルシーな場合のデフォルト値、第二引数にはオブジェクトの階層、参照順に配列要素にする。

https://goo.gl/RxoL74

--------------------WIP----------------------------

chain

ざっくりいうと・・・

fa

chain

sequence

https://ramdajs.com/docs/#sequence
ざっくりいうと・・・

fa

sequence

tap

https://ramdajs.com/docs/#tap
ざっくりいうと・・・

fa

tap

traverse

https://ramdajs.com/docs/#traverse
ざっくりいうと・・・

fa

traverse