看不同的OCAML项目,我看不到使用的语言中的内置流。即使在最近的现实世界中,也根本没有提及流,这很奇怪。
这样做的原因是什么?是因为LWT或核心取代它们吗?
我想我在此错误报告中几乎回答了这个问题。
流在CAMLP4语法支持的情况下非常好,没有它,它们几乎无法使用。因此,这是很久以前的(尽管从理论上讲仍然是可用的)。根据Drup的参考,他们甚至会在不久的将来(今年)从核心语言中删除,并且大概将转移到独立的图书馆。
这并不是说,流作为数据结构有问题。这仍然是许多OCAML项目中使用的非常有价值的技术,它们只是使用实施此功能的不同库。有核心Sequence
,电池Enum
,Simon Cruanes的gen
和sequence
软件包,Joseph Abrahamson的fstream
软件包,仅举几例。
流可以用于OCAML中的'懒惰评估',尤其是因为OCAML是一种渴望的语言,因此肯定有有用的情况是懒惰的评估(例如在Haskell中)。
引用溪流康奈尔的讲座,
流在现实生活中实际上很有用。一些应用程序:
- 编译器从文本读取源文件
- 网络插座
- 音频和视频信号处理
- 语音识别
- 使用Convergent Series
近似于方程的解决方案
提供的参考文献还使用流来计算素质懒惰,这与使用eratosthenes的筛子计算大量素数相比非常快。因此,我觉得流肯定在语言中占有一席之地,因为它允许在OCAML中进行懒惰评估。
我的教授使用流以一种渴望的语言来解释懒惰评估的概念,因此在现实世界中没有提及的是,ocaml 可以是 语言本身是渴望的,流是与该概念不平行,并且该流无法被静止。(但是,这是猜测)