登录
首页 >  文章 >  前端

Transducer:强大的函数组合模式

时间:2025-01-20 14:39:54 329浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《Transducer:强大的函数组合模式》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

Transducer:强大的函数组合模式

别名:: transducer:强大的函数组合模式 笔记本:: transducer: 一种强大的函数组合模式

地图和过滤器

map 的作用是对集合中的每个元素应用一个转换函数。

const collect = (ac, x) => {
  ac.push(x);
  return ac;
};

const reduce = (reducer, init) => {
  return async iter => {
    let ac = init;
    for await (const item of iter) {
      if (ac && ac['@@transducer/reduced']) {
        return ac['@@transducer/value'];
      }
      ac = reducer(ac, item);
    }
    return ac;
  };
};

function sinto(init, tf) {
  const reducer = tf(collect);
  return reduce(reducer, init);
}

const task = sinto([], compose(
  rmap(x => x + 1),
  rfilter(x => x % 2 === 1),
  rtake(8)
));

task(fibs()).then(res => {
  console.log(res);
});

相同的逻辑适用于不同的数据结构。

执行顺序

基于柯里化的 compose 和基于 reducercompose 的参数顺序不同。

柯里化版本

函数执行是右关联的。

Transducer 版本

参考

Transducer - Clojure 参考

终于介绍完啦!小伙伴们,这篇关于《Transducer:强大的函数组合模式》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>