UNIXの哲学と関数型プログラミング

UNIXの哲学と関数型プログラミングは共通しているところがあるよね、というのを最近同僚と話した。

ここでいうUNIXの哲学とは

  • スモール・イズ・ビューティフル
  • 一つのプログラムには一つのことを うまくやらせる
  • ソフトウェアの挺子を有効に活用する

など(「UNIXという考え方-その設計思想と哲学」より)。

それらと、関数型プログラミングの、一つの機能に絞った小さな関数を組み合わせ、大きな関数を作っていくという部分が似ているなと。

とりわけ強くそう思うのが、UNIXでコマンドをパイプで繋げて自分の期待する結果を得るところ。関数型プログラミングだと、関数合成にあたる。

UNIXの操作に慣れている人なら、関数型プログラムもしっくりくるのでは。