参照透過性と副作用について考える

用語に聞き馴染みがなければこちら
オブジェクト指向と関数型で副作用の扱いが違うって知ってた?

個人的に非常に恥ずかしいことだが今までなおざりにしてきた気がする
関数型言語を学ぶことで否が応でも意識せざるを得ないのがこれら概念
ここ数日で相当数の書籍と個人の主張を書いたブログなどを読み漁った

まだまだ消化しきれていないしそもそも宗教戦争に加わりたくないので
敢えて「こうするべきである!」というような内容を書くつもりは無い

あくまで私自身が今後プログラムを行なっていく上で大事にしたいのは
参照透過性を意識して副作用を持たない関数と持つ関数を分離すること
それはつまり「命令」と「関数」を厳密に使い分けることなのかと思う

Lisp(Haskellの方が良いと言われるが…)でプログラムを書いていると
本当に参照透過であることがどれだけメリットのあることかと思い知る