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);
    }
  • 相关阅读:
    Object.assign () 和深拷贝
    在关机或重启前,关闭有道云笔记
    OpenSSL生成加密证书.cer和.pfx
    scrcpy 安卓投屏
    C#.NET AES CBC 加密
    华擎B365M ITX ,SSD WIN7 电脑卡顿,4K异常,9代 I7
    华擎B365 BIOS 设置来电启动,来电自启,来电后开机
    打开 gpedit.msc 组策略时弹出错误提示,"找不到资源 string.Advanced_EnableSSL3Fallback ”。
    将手机声音通过蓝牙输入到WIN10电脑
    CSS选择器——cssSelector定位方式详解
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5824362.html
Copyright © 2011-2022 走看看