zoukankan      html  css  js  c++  java
  • [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);
    }
  • 相关阅读:
    Docker从12升级到17ce
    镜像清理和删除
    flask-session 在redis中存储session
    linux后台运行python程序 nohup
    flask 自动切换环境
    Linux SSH登录很慢的解决方法
    docker-compose docker启动工具,容器互联
    为什么企业需要IT资产管理
    sql 中取整,四舍五入取整,向下取整,向上取整。
    sqlalchemy 获取表结构。
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5824362.html
Copyright © 2011-2022 走看看