JavaScript 関数型プログラミングのpipeっぽいものをつくる

funcは関数の配列です。xに対して順番にfuncsの関数を適用します。

const pipe = funcs => x => funcs.reduce((acc, current) => current(acc), x)

使い方。

const addHoge = v => `${v} hoge`;
const addFoo = v => `${v} foo`;

const result = pipe([addHoge, addFoo])('tamibouz');
console.log(result); // tamibouz hoge foo

以下のような流れです。

まず、addHoge('tamibouz’)が実行される。

この結果を引数にして、addFoo('tamibouz hoge’) が実行される。

他の例として、+1してから*10する場合は

const addTen = v => v + 1;
const timesTen = v => v * 10;

const result = pipe([addTen, timesTen])(2);
console.log(result); // 30