Curry化くらいスクリプト言語やっているんだから、出来るよね
なんてことを言われたら、困るので、カリー化のお勉強をしておこうと思う。
カリー化とは?
ググッてください
部分適用とかもよくわからないんで、どうしようかな
というわけで、
Javascript
ではよく使われている、変数の
private
化をやって見ることにしましょう。カリー化はその先にある。
多分。
counter.groovy
def counter = {
def cnt = 0
return { cnt += 1 }
}
def cnt = counter()
10.times {
def value = cnt()
println value
assert value == it + 1
}
実行結果は次の通り
1
2
3
4
5
6
7
8
9
10
さて、オレが最初にカリー化を覚えたのは実は
javascript
の方が最初でして、やはりここはjavascript
大先生に登場願わなければならんとせんといかんであるで御座候。counter.js
var counter = function() {
var c = 0;
return function() {
c += 1;
return c;
}
}
var cnt = counter();
for (var i = 1; i <= 10; i += 1) {
console.assert (cnt() == i);
}
はい、これをChrome14.0.835.hogehogeで実行したところ、Assertion Errorは発生しませんでした。
というわけで、今回の目的、クロージャー内に変数をprivateとして隠蔽するという目標は達成。
では、明日はおもむろにカリー化に挑戦する!
0 件のコメント:
コメントを投稿