2011年10月27日木曜日

Curry化のお勉強の入門1

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 件のコメント:

コメントを投稿