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);
    }
  • 相关阅读:
    源码0603-08-掌握-NSURLSession-上传
    源码0603-05-掌握-大文件下载
    源码0603-03-掌握-NSURLSession
    源码0603-01-了解-大文件下载(NSOutputStream)
    源码0602-10-掌握-文件上传11-了解-获得文件的MIMEType
    源码0602-08-掌握-解压缩
    源码0602-06-掌握-小文件下载-大文件下载
    用JS实现的控制页面前进、后退、停止、刷新以及加入收藏等功能
    java一路走来
    CKEditor3.5.3 JAVA下使用
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5824362.html
Copyright © 2011-2022 走看看