2017年3月28日火曜日

関数型プログラミングの基礎

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

コメントを投稿