https://gyazo.com/153a339305d78fc4fa4850753e4b1594.png

はじめに

この資料は関数型プログラミングを用いたパイプライン処理について説明するものです。次のことを取り上げています。

関数型プログラミング

関数型プログラミング(Functional Programming)

Python では、文法として 式 (expression)文 (statement) を持つ手続型プログラミング言語です。Pythonの式は、計算を実行して結果を得るような処理を記述するための文法要素で、加減乗除や関数呼び出しなどから構成されます。Python の文は、何らかの動作を行うようにコンピュータへ指示するための文法要素で、条件分岐やループを行う制御文などから構成されいます。

Haskell や Elixir、 Elmなどの関数型言語ではプログラムはたくさんの式で構成され、プログラムそのものもひとつの式と扱われます。手続き型言語ではコンピュータへの指示を文として上から順に並べて書くのに対して、関数型言語では数多く定義した小さな式を組み合わせてプログラムを作ります。

両者のもっとも大きな違いは、関数型プログラミング言語では代入は存在しません。関数の呼び出しは結果を得ること以外なにもしないため、変数はいちど与えられると変更されることはありません。プログラムを実行したときに代入による副作用が発生しないことから、バグの混入を防ぐ効果があります。式はいつでも参照することができ、ロジックを考える負担を減らしてくれ、数学的な問題に対応しやすいといった特徴があります。

パイプライン

パイプライン(Pipeline)

バイオインフォマティックスや機械学習の領域では、データの前処理、学習、分析など工程がいくつか必要になるため、 パイプライン処理でデータを扱う場合が多くなります。

関数型プログラミングとパイプラインは相性がよく、同じ目的にで利用されることがあります。

関数型プログラミングの利点