たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

Javascriptでcompose/pipe

composeは現行のECMAScriptで、pipeは今後のECMAScriptで出来ちゃうんです!

compose

このレポジトリが簡潔かつ最強ぽい
gist.github.com
レストパラメータを使って関数を引数にとり、(レストパラメータのおかげで配列に入ってる関数群を)reduceでじゃんじゃか合成していくスタイル.
あったま良いなぁ…

R.compose

既存ライブラリを使うなら、Ramda.jsのR.compose()とか。Promise等に対応した変種もある。

pipe

次世代のproposalとして策定中
現在はstage1
github.com
色々な表記法や派生系が議論されてるたい.
例えばこんなの

let result = "hello"
  |> doubleSay
  |> capitalize
  |> exclaim;

result //=> "Hello, hello!"

アロー関数で部分適用をしてこう書いたり

let person = { score: 25 };

let newScore = person.score
  |> double
  |> (_ => add(7, _))
  |> (_ => boundScore(0, 100, _));

newScore //=> 57

はやく正式採用されないかなー