JSによる関数型プログラミングの学習


関数型プログラミングとは

  • プログラミングパラダイム
  • コーディングスタイル
  • 物忘れ
  • セクシーな、Buzz Wordy傾向

    なぜ機能JavaScript?

  • オブジェクト指向JSはトリッキーになります(プロトタイプ?
  • 、より安全で、デバッグして/
  • を維持するのがより簡単です
  • は、コミュニティ
  • を設立しました

    さあ、やりましょう!

    ...どうやって?


    すべてを関数で行う


    input -> output


    機能しません:


    var name = Lakshya;
    var greeting = Hi, Im ;
    console.log(greeting + name);
    => Hi, Im Lakshya
    

    機能性


    function greet(name) {
    return Hi, Im  + name;
    }
    greet(Lakshya);
    => Hi, Im Lakshya
    

    避けて副作用


    use “pure” functions


    純粋ではない


    var name = Lakshya;
    function greet() {
    console.log(Hi, Im  + name);
    }
    

    純粋


    function greet(name) {
    return Hi, Im  + name;
    }
    

    高次関数の使用


    functions can be inputs/outputs


    function makeAdjectifier(adjective) {
    return function (string) {
         return adjective +   + string;
       };
    }
    var coolifier = makeAdjectifier(dev);
    coolifier(to);
      => dev to
    

    反復しない


    use map, reduce, filter



    Source: https://www.datasciencecentral.com/forum/topics/what-is-map-reduce


    変異を避ける


    use immutable data


    突然変異


    var rooms = [H1, H2, H3];
    rooms[2] = H4;
    rooms;
    => ["H1", "H2", "H4"]
    

    突然変異はない


    var rooms = [H1, H2, H3];
    Var newRooms = rooms.map(function (rm) {
      if (rm == H3) { return H4; }
      else { return rm; }
    });
    newRooms; 
    => ["H1", "H2", "H4"]
    rooms; 
    => ["H1", "H2", "H3"]