• [Ramda] Basic Curry with Ramda


    var _ = R;
    
    /*****************************************
          C U R R Y I N G  E X A M P L E
    ******************************************/
    
    // We've got a nice multiply function.
    // It takes two arguments.
    
    console.log( _.multiply(3, 4) );
    
    // But it has been secretly curried already 
    // so we can feed it fewer arguments and it 
    // will return a new function.
    //
    // How about making a function to double a 
    // value? Done.
    var double = _.multiply(2);
    
    console.log( double(13) );
    
    /*****************************************
                   Y O U R  T U R N
    ******************************************/
    
    // _.split pulls a string apart around a
    // given value
    console.log( _.split('i', 'mississippi') );
    
    // -- Challenge 1 ------------------------
    // Make a function called "words" which 
    // returns a list of words in a string.
    // Use only the split function and
    // currying.
    
    console.log("Testing challenge 1...");
    
    var words = _.split(' '); // change this
    assertEqualArrays(
      ['one', 'two', 'three'],
      words('one two three')
    );
    console.log("passed");
    
    // -- Challenge 2 ------------------------
    // Create a function to triple every
    // number in a list using only
    // _.multiply and _.map.
    
    console.log("Testing challenge 2...");
    
    var tripleList = _.map(_.multiply(3));
    assertEqualArrays([3,6,9], tripleList([1,2,3]));
    
    console.log("passed");
    
    // -- Challenge 3 ------------------------
    // Create a function to find the largest
    // number in a list. You can use the
    // greater(a,b) function which returns the
    // greater of its two inputs. You can do
    // this with currying and one of the list
    // functions _.map, _.filter, or _.reduce.
    
    console.log("Testing challenge 3...");
    
    var greater = function(a,b) {
      return a > b ? a : b;
    };
    
    var max = _.reduce(greater, -Infinity);
    assertEqual(9, max([1,-3483,9,7,2]));
    assertEqual(-1, max([-21,-3483,-2,-1]));
    
    console.log("passed");
    
    
    console.log("All tests pass.");
    /******************************************
            B A C K G R O U N D  C O D E
    *******************************************/
    
    function assertEqualArrays(x,y) {
      if(x.length !== y.length) throw("expected "+x+" to equal "+y);
      for(var i in x) {
        if(x[i] !== y[i]) {
          throw("expected "+x+" to equal "+y);
        }
      }
    }
    function assertEqual(x,y){
      if(x !== y) throw("expected "+x+" to equal "+y);
    }
  • 相关阅读:
    VUE组件间传参
    JS-03 (RegExp对象&字符串总结)
    JS-02 (字符串的正则函数)
    理解 C++ 的 Memory Order
    GCC的原子操作函数
    barrier内存屏障
    tcp重传机制,流量控制,拥塞控制
    TCP 的拥塞控制
    Monitoring and Tuning the Linux Networking Stack: Receiving Data
    kernel网络之软中断
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5824362.html
Copyright © 2020-2023  润新知