http://kenokabe-techwriting.blogspot.jp/2015/04/amazon102-93.html
これのやつなぁ……。
確かに自分も最初に関数型勉強しだしたときに、混乱したポイントではあったんだよ。
なんでかというと、クロージャでぐぐると、まっさきにjavascriptのクロージャの説明が出てきて、その中で実用例として「呼び出すたびに出てくる数値がインクリメントされる」的な例が真っ先に出てくるから。
「えっ、クロージャって、これやるための機能なの? 副作用バリバリじゃね?」って思っちゃうんだよね。
これはかなりのけっ躓きやすいポイントになってしまっていると思う。
実際はJavascriptの例でよく出てくる使われ方は、かなり特殊例なんだけど、これが代表、みたいな扱いに見えるんだよね、今の検索結果だと……。
副作用のないクロージャって関数の部分適用で実現できるから必要なくね?
その「関数の部分適用」を実現するために(専用の機能を持っていない限りは)クロージャが必要なんだよ!!
関数がカリー化されてない関数型言語なんてあるの? あんまり書きたくないな、そんな言語。 オブジェクトプログラミングでメモリの番地の数字を直接いじらないみたいに、 そこを意...
まぁ、関数型として専門的に作られているような奴は、大体デフォでカリー化ついてるけど、そいつらも要は裏ではクロージャ的なものを使ってる。 で、それこそJavascriptとかLispみたい...
オツムが悪いといろいろ苦労するんだな。
そらそうやろ