Categorygithub.com/momotaro98/go-codes-for-learningConcurrency-in-Gochapter4_Patterns_of_Go_Concurrencysection6_pipeline
# README
パイプライン
パイプラインはシステムの抽象化に使える道具の1つです。特にデータストリームやバッチ処理を扱う必要があるときにとても協力な道具です。
パイプラインを使うことで、各ステージでの懸念事項を切り分けられます。これは多くの利点をもたらします。各ステージを独立して修正することができ、ステージ同士の組み合わせ方をステージの修正とは独立して変更できます。
パイプラインステージの性質
- ステージは受け取るものと返すものが同じ型である。
- ステージは引き回せるように具体化されていなければならない。Goにおいて関数は具体化されているため(※1)、この目的にうまく適合している。
※1: Goでは関数シグネチャの型を持つ変数を定義することができるという意味で言っている。またこれは関数をプログラムの中で変数として渡せることも意味する。
パイプラインのステージ関数は関数プログラミングと密接に関係していて、モナドのセブセットと"考える"こともできます。