首页 > 代码库 > [Ramda] Basic Curry with Ramda

[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 valueconsole.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 thisassertEqualArrays(  [‘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);}

 

[Ramda] Basic Curry with Ramda