join
和of
两个方法并遵循一些定律就是一个Monad
class IO {constructor (fn) {this._value = https://www.huyubaike.com/biancheng/fn}static of (value) {return new IO(function () {return value})}map (fn) {return new IO(fp.flowRight(fn, this._value))}join () {return this._value()}// 同时调用 join 和 mapflatMap (fn) {return this.map(fn).join()}}function readFile (fileName) {return new IO(() => fs.readFileSync(fileName,'utf-8'))}function print (x) {return new IO(() => {return x})}let r = readFile('package.json').flatMap(print).join()console.log(r)
当我们想要去调用一个方法,这个方法返回一值的时候我们去调用map
方法,当我们想要去调用一个方法,这个方法返回一个函子的时候我们去调用flatMap
方法
原文地址:https://kspf.xyz/archives/17更多内容微信公众号搜索【JavaScript函数式编程之函子】充饥的泡饭
小程序搜一搜开水泡饭的博客
经验总结扩展阅读
- Java函数式编程:一、函数式接口,lambda表达式和方法引用
- Vue3 SFC 和 TSX 方式调用子组件中的函数
- C++ 函数重载解析策略
- 火漆可以用来干嘛
- 原生JavaScript
- 钩子 【pytest官方文档】解读-插件开发之hooks 函数
- Java 最长公共前缀
- TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践
- Python函数-2V2
- 三角函数正切公式