curry 用来组合function还是8错的
//curry function
Function.prototype.curry=function(){
var originFunc=this;
var args=[];
for(var i=0;i<arguments.length;i++){
args[i]=arguments[i];
}
if(args.length==0) args=null;
var newFunc=function(){
var args=[];
for(var i=0;i<arguments.length;i++){
args[i]=arguments[i];
}
args=arguments.callee.curryArgs.concat(args);
if(args.length==0)args=null;
return arguments.callee.originFunc.apply(this,args);
}
newFunc.curryArgs=args;
newFunc.originFunc=originFunc;
return newFunc;
}
//each function for array . test curry
Array.prototype.each=function(f){
for(var i=0;i<this.length;i++){
f(this[i]);
}
}
//map function for array,generate new array, test curry
Array.prototype.map=function(f){
var result=[];
for(var i=0;i<this.length;i++){
result[i]=f(this[i]);
}
return result;
}
//test run
function run(){
var composit=function(f,g,x){
return f(g(x));
}
var mul=function(x,y){
return x*y;
}
//var triple=mul.curry(3);
//alert(triple(4));
var double=mul.curry(2);
//var sixTimes=composit.curry(double).curry(triple);
//var al6=composit.curry(alert).curry(sixTimes);
//al6(10);
var app=function(f,list){
list.each(f);
}
var map=function(f,list){
return list.map(f);
}
var l=[8,7,6];
l.alertEach=l.each.curry(alert);
l.alertEach();
app.curry(alert)(l);
composit.curry(alert,map.curry(double))(l);
}
run();
分享到:
相关推荐
【前端JavaScript彻底弄懂函数柯里化curry】 一、什么是柯里化(curry) 在编程领域,尤其是JavaScript中,柯里化是一种将接受多个参数的函数转换为一系列只接受一个参数的函数的技术。其核心思想是将一个多参数...
Monad是一个抽象的数学概念,在JavaScript中被用来处理异步操作和进行错误处理。 函数饲养:函数饲养(Function Breeding)是创建新函数的方法,通常用于高阶函数中。 Pointfree编程:Pointfree风格是指在编程中,...
在“Functional Javascript Workshop”中,我们将深入探讨JavaScript中的函数式编程概念和技术。函数式编程是一种编程范式,强调使用函数作为基本构建块,避免改变状态和可变数据,从而提高代码的可读性和可维护性。...
Curry 小结 第5章 对象创建模式 命名空间模式 声明依赖关系 私有属性和方法 模块模式 沙箱模式 静态成员 对象常量 链模式 method()方法 小结 第6章 代码复用模式 传统与现代继承模式...
在JavaScript中,可以使用`Function.prototype.bind()`或lodash/ramda库中的`curry`函数实现柯里化,这有助于创建可重用的、更灵活的代码。 4. 函数组合(Function Composition):这是将多个小功能组合成更复杂...
在前端工程师的面试中,`curry`是一个常见的概念,尤其在涉及到函数式编程的时候。`curry`函数的主要作用是将一个多参数的函数转换成一系列单参数的函数,允许我们逐步提供参数并最终得到结果。这个过程被称为柯里化...
JavaScript中的柯里化(Currying)是一种将接受多个参数的函数转换为接受单个参数的函数的技术,每次只处理一个参数,并返回一个新的函数以处理剩余的参数。这种技术源自数学家哈斯凯尔·加德纳·柯里,因此得名。...
5. **函数式编程**:JavaScript支持函数式编程概念,如高阶函数、闭包和 curry 化。这些实例可能包含对这些技术的应用。 6. **面向对象编程**:JavaScript支持类和对象,可以创建复杂的面向对象系统。实例将涵盖...
本书旨在为JavaScript开发者提供一系列实用且深入的专业技巧,帮助他们在实际开发过程中更好地掌握这门语言的核心特性及其应用场景。书中涵盖了从基础到进阶的多个方面,包括但不限于如何在浏览器环境中与用户交互、...
在JavaScript中,`map`、`filter`、`reduce`等方法都是高阶函数的例子,它们用于操作数组,而`compose`和`curry`则用于组合和封装函数。 4. 闭包 闭包是函数能够访问其词法作用域内的变量,即使在其定义的作用域...
9. **函数式编程库**:在JavaScript中,有很多库如Ramda、Lodash的_.fp模块等,它们提供了丰富的函数式编程工具,如curry、pipe、map、filter等功能,方便开发者实践函数式编程。 10. **函数式编程与React**:React...
JavaScript中的Curry函数,也称为部分应用函数,是一种将接受多个参数的函数转换为一系列只接受一个参数的函数的技术。这种技术源于数学家Haskell Curry,因此得名。Curry化的主要目的是提高代码的可读性和重用性,...
**JavaScript中的函数式编程基础** 在JavaScript的世界里,函数式编程(Functional Programming,简称FP)是一种编程范式,它强调将计算视为函数的数学运算,而不是改变状态或跳转流程。这种风格的编程有助于创建...
JavaScript中的函数柯里化(Currying)是一种将接受多个参数的函数转换成一系列接受单一参数的函数的技术。这种技术源自于数学家Haskell Brooks Curry的名字,它的主要思想是每次只处理一个参数,然后返回一个新的...
JavaScript 中几种重要的高阶函数及其应用方式,其中包括通过 rest 参数传递任意参数(addArrayElements 函数)、数组映射转换(arrToString 方法)、闭包用于封装状态计数器(makeCounter 函数)、柯里化(curry 化...
Underscore.js是一个轻量级的JavaScript实用库,它为开发者提供了大量函数式编程工具,使得在JavaScript中实践函数式编程变得更加容易。 在JavaScript中,函数式编程的核心概念包括: 1. **纯函数**:一个纯函数在...
5. **函数式编程**:JavaScript也具有函数式编程的特点,如高阶函数、闭包和 curry 化等,这部分内容可以帮助开发者写出更简洁、可维护的代码。 6. **异步编程**:JavaScript的异步处理是其独特之处,涉及到回调...
《在战斗中召唤机械师——JavaScript编程指南》 在当今数字化的世界中,JavaScript以其灵活性和广泛的应用场景,已经成为Web开发的必备语言。本资源“在战斗中召唤机械师_JavaScript_下载.zip”是一个专门为初学者...