javascriptでも関数型プログラミングができるということで、上記の書籍を読んでみた。
さっそく、リスト2.4で 少し混乱する。
var get = (key, obj) => {
return obj(key);
};
var set = (key, value, obj) => {
return (key2) => {
if(key === key2) {
return value;
} else {
return get(key2,obj);
}
};
};
var ob;
ob=set('a',1,ob); 1
ob=set('b',2,ob); 2
などと試し見た。
get('a',ob);
1
get('b',ob);
2
と、確かにできた。
1ではob('a')が1へ対応する関数
(key2) => {
if ('a'===key2) {
return 1;
} else {
return ob(key2);
}
};
}; ができて
2ではob('b')が2へ対応する関数
(key2) => {
if ('b'===key2) {
return 2;
} else {
return ob(key2);
}
};
};
ここのob(key2)は
ob('a')が1へ対応するもの、つまり1の関数がきている
これを再帰的に繰り返しているということだろうか?
0 件のコメント:
コメントを投稿