rxjs ramda clojure 随想

作者: admin 日期: 2018-04-06 18:52:08 人气: - 评论: 0

最近尝试在项目使用ramda 和 rxjs 相较于前段时间研究的clojure做了个对比


ramda的fp风格和clojure已经很接近了ramda支持函数默认柯里化调用、函数局部套用比clojure方便点


ramda里面没有clojure里面一个很重要的惰性序列,clojure中的惰性序列类似JavaScript中的生成器


clojure的惰性序列比JavaScript的生成器高级,因为clojure在接口层面把惰性序列和普通序列统一成了一个概念,比如一个函数接受一个序列作为参数,函数内部是不需要区分这个序列是惰性的还是非惰性的,JavaScript中的生成器很明显和其他对象具有不同的接口


rxjs对流应用操作符的过程非常像在clojure惰性序列的操作,不过rxjs对流的操作能力,相比于clojure 的惰性序列操作还是逊色很多,从本质上来说clojure的惰性序列是一个生成器,由消费者触发‘拉取’数据,而rxjs实际上是生产者主动 ‘推送’数据给消费者


在clojure中我们可以要求一个有限序列和一个无限惰性序列进行‘交织’操作,而在ramda中这是不被支持的,因为在JavaScript中有限序列和生成器是两个概念,rxjs中支持两个事件流的交织,不过这里的交织动作是由数据生产者触发的,而不是消费者


总结,在JavaScript中使用了ramda和 rxjs等工具库还是很难达到在clojure中顺畅的函数式编程体验



相关内容

发表评论
更多 网友评论0 条评论)
暂无评论

Copyright © 2012-2014 我的代码板 Inc. 保留所有权利。

页面耗时0.0241秒, 内存占用1.82 MB, 访问数据库13次

闽ICP备15009223号-1