首页 > 代码库 > [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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。