[Compose] 14. Build curried functions
We see what it means to curry a function, then walk through several examples of curried functions and their use cases.
For example we have an 'add' function:
const add = (x, y) => x + y; const inc = y => add(1, y);
inc(2)
//3
We want to conver it to using curry function, the way we do it is by function another function inside add function:
const add = x => y => x + y;
SO the first time we call add(), it will remember the value we passed in:
const inc = add(1); // now x = 1
But the function won't be run until we pass in second param:
const res = inc(2); // now y = 2 console.log(res) // 3
----------
Of course, previous example is not that useful, there is another example:
const modulo = dvr => dvd => dvd % dvr; const isOdd = modulo(2); // dvr = 2; const res1 = isOdd(7); //dvd = 7 const res2 = isOdd(4); //dvd = 4 console.log(res1) // 1 console.log(res2) // 0
Exmaple2:
const modulo = dvr => dvd => dvd % dvr; const isOdd = modulo(2); // dvr = 2; const filter = pred => ary => ary.filter(pred); const getAllOdds = filter(isOdd); const res = getAllOdds([1,2,3,4,5]); console.log(res) //[1, 3, 5]
Example3:
const replace = regex => replaceWith => str => str.replace(regex, replaceWith); const censor = replace(/[aeiou]/ig)('*'); // [aeiou] --> regex, replaceWith --> * const res = censor('Hello World'); console.log(res); //"H*ll* W*rld"
Example 4:
const map = fn => ary => ary.map(fn); const replace = regex => replaceWith => str => str.replace(regex, replaceWith); const censor = replace(/[aeiou]/ig)('*'); // [aeiou] --> regex, replaceWith --> * const censorAll = map(censor); const res = censorAll(["Hello", "World"]); console.log(res); //["H*ll*", "W*rld"]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2014-12-20 [AngularJS] ngModelController render function