JavaScript函数式编程之函子( 三 )

joinof两个方法并遵循一些定律就是一个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函数式编程之函子】

经验总结扩展阅读