純粋であること。副作用がないこと。
2010/03/06
関数型言語
関数型言語についての本を開くと、「関数が純粋である」とかでてくるし、あと「副作用がない」というのもでてくる。
で、正直、よくわかってないのだが、素直に同じ引数を渡せば、同じ結果が得られるというふうに理解した。
だけど、これが自分がプログラムを書くうえでどうメリットになるのか、これからぽちぽちと勉強していこと思う。
スバラしいとか、すごいとかいわれても実感としてまだ体感?できてないんだよね。
経験として、バグとりではまるとき、あるメソッドなりクラスが、裏で環境変数をSystem.getenvとかしてたりしていて、動きがわからないということがあるけど、《みえないところで何かしている》ということをなくせば、普段つかってるJavaとかでもスジがよくなるかな。
正直、Javaのキーワードのfinalについてわかってない。《変数を上書きできない》ということのメリットをJVMを実装する上での要求と考えていたのだけど、Haskell,とかErlang、一度変数を定義すると上書きできないことが言語のデフォルトなのをみると、それだけではないのかな。
: