查看不同的ocaml项目,我没有看到在语言中使用的内置流。即使在最近出版的“真实世界”()一书中,也根本没有提到流,这是很奇怪的。
原因是什么?是因为Lwt还是核心超级种子?
发布于 2015-05-12 22:26:36
我想我是在这个错误报告上回答这个问题的。
发布于 2015-05-13 13:04:58
流很好地支持camlp4语法,如果没有它,它们很难使用。因此,这是很久以前的事了(虽然理论上它仍然是可用的)。根据Drup的参考,它们甚至会在不久的将来(今年)从核心语言中被移除,并且可能会被移到一个独立的库中。
这并不是说,流作为数据结构有什么问题。在许多OCaml项目中,这仍然是一种非常有价值的技术,他们只是使用不同的库来实现这一点。有核心Sequence,电池Enum,西蒙克鲁斯的gen和sequence包,约瑟夫阿布拉汉森的fstream包等等。
发布于 2015-05-13 02:41:58
流可以用于OCaml中的“懒惰评估”,特别是因为OCaml是一种热切的语言,因此肯定有一些有用的例子需要懒惰评估(比如在Haskell中)。
引用康奈尔溪流讲座的话,
在现实生活中,流实际上是有用的。一些申请:
提供的引用还使用流来惰性地计算素数,这与使用Eratosthenes筛子计算大素数的一般方法相比非常快。因此,我觉得流在语言中肯定有自己的位置,因为它允许在OCaml中进行懒惰的评估。
流被我的教授用一种渴望的语言解释了懒惰评估的概念,在真实世界的OCaml中没有提到它的原因可能是因为语言本身是渴望的,流不是与这个概念平行的,而且流不能是多线程的。(不过,这是猜测)
https://stackoverflow.com/questions/30197961
复制相似问题