クロージャがどうこう
Javascriptのクロージャの例として、こういったソース片をよく見る。
function makeClosure() { var n = 0; return function() { return n++; } }
これは便利!っておもうか、これは危ない!と思うか…。ほいほいリファレンスがとれるのは、危ないんじゃないか(特にマルチスレッドで動いたときに)と最近思うのですがどうなんでしょう。
どっかにOCamlじゃかけないとか書いてあった気がするが、そんなことない。
let make_closure () = let n = ref 0 in fun () -> let n' = !n in n := n' + 1; n'
やっぱり、書き換え可能なのか不可能なのかは区別した方がいいよね。
そういや、Javaはconstが予約語らしい。最近知った。将来的にconstメソッドとかできるんだろうか。それとも、単に間違い防止?