TL;DR
第 1 引数の値を第 2 引数の関数に渡し、その結果を第 3 引数の関数に渡す、という処理を順に繰り返す Effect の関数。
なぜ必要か
関数呼び出しを入れ子にすると、ネストが深くなって処理の起点や順番を追いにくい。pipe を使うと、処理を上から順に並べて書けるので読みやすくなる。
例
const main = pipe(fetchRequest, Effect.flatMap(jsonResponse), Effect.flatMap(savePokemon))Effect 自身も pipe メソッドを持つので、次のようにも書ける。
const main = fetchRequest.pipe(Effect.flatMap(jsonResponse), Effect.flatMap(savePokemon))Effect.flatMap(jsonResponse) のように引数を 1 つだけ渡せるのは、Effect の API が Dual API になっているためである。
注意点
ステップが増えると、pipe で組み立てたコードも読みにくくなる。そのときは Effect.gen を使う。