zoukankan      html  css  js  c++  java
  • [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"]
  • 相关阅读:
    python之并发编程
    python之并发编程(理论部分)
    python之网络部分
    python之异常处理
    py之包和日志
    mysql之general log 日志
    python之代码规范
    文件权限管理命令chmod,chown与文本搜索命令grep
    Linux用户与组管理命令
    Linux常见文件管理命令
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6204313.html
Copyright © 2011-2022 走看看