-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmemo.js
More file actions
58 lines (53 loc) · 1.03 KB
/
memo.js
File metadata and controls
58 lines (53 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function memo1(f) {
var cache = [];
return function(@x) {
var ret =@ cache["" + x];
return ret !== null ? ret
: cache[x] = f(x);
};
}
function bmemo(f) {
var cache = [];
return function(@x) {
var ret =@ cache[x];
return ret !== null ? ret
: cache[x] = f(x);
};
}
function umemou2(f) {
var cache = [];
return function(@x, @y) {
var params = x + "|" + y;
var ret =@ cache[params];
return ret !== null ? ret
: cache[params] = f(x, y);
};
}
function memou2(f) {
var cache = [];
return function(@x) {
return function(@y) {
var params = x + "|" + y;
var ret =@ cache[params];
return ret !== null ? ret
: cache[params] = f(x, y);
};};
}
function bmemo2(f) {
var cache = [];
return function(@x) {
var ret =@ cache[x];
return ret !== null ? ret
: cache[x] = bmemo(f(x));
};
}
function memo2(f) {
var cache = [];
return function(@x) {
return function(@y) {
var params = x + "|" + y;
var ret =@ cache[params];
return ret !== null ? ret
: cache[params] = f(x)(y);
};};
}