stream.js :一个新的JavaScript数据结构

最近在网上看到了一个新的Javascript小程序——Streams,起初以为是一个普通的Javascript类库,但读了关于它的介绍后,我发现,这不是一个简单的类库,而且作者的重点也不是这个类库的功能,而是——借用文中的一段话:

如果你愿意花10分钟的时间来阅读这篇文章,你对编程的认识有可能会被完全的改变(除非你有函数式编程的经验!)。

还有:

Streams 实际上不是一个新的想法。很多的函数式的编程语言都支持这种特征。所谓‘stream’是Scheme语言里的叫法,Scheme是LISP语言的一种方言。Haskell语言也支持无限大列表(list)。这些’take’,’tail’, ‘head’, ‘map’ 和 ‘filter’ 名字都来自于Haskell语言。Python和其它很多中语言中也存在虽然不同但很相似的这种概念,它们都被称作”发生器(generators)”。

这些思想来函数式编程社区里已经流传了很久了。然而,对于大多数的Javascript程序员来说却是一个很新的概念,特别是那些没有函数式编程经验的人。

有兴趣的读者可以查看本站提供的它官方文档的中文翻译

分享这篇文章:

10 Responses to stream.js :一个新的JavaScript数据结构

  1. Sheldon Chen says:

    很喜欢函数式编程的思想,虽然现在写程序用得不多,不过也是扩展了自己了知识范围,蛮好的。

  2. tongDou says:

    这对我来说是一种新的思想,见识了,谢谢!

  3. Timothy says:

    这里很多的例子和创意都是来自Structure and Interpretation of Computer Programs“这本数”有别字…

  4. Charlie says:

    用过LINQ的C#开发者不会陌生,对JavaScript,它很棒,推荐Linq.js

  5. Sen says:

    用Underscore也可以实现,这个相比Underscore有什么优势?

  6. Lenic says:

    如果您有时间可以看下http://jsinq.codeplex.com/,可以说是Stream类库的一个超集,功能函数命名可以参照微软 LINQ ,参数也类似。

    对于熟悉 LINQ 的开发者来说,或许 JSINQ 这个类型可以零时间上手。

  7. dongguangming 对这篇文章的反应是飘过~
  8. Alsmile says:

    rxjs好像比这个强大啊

  9. var s2 = new Stream();
    s2.append(1).append(2).append(3);
    console.log(s2.length());
    在github上搞了一个官方例子,放到浏览器一跑,报错了。
    难道是我姿势不对吗?

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据