Stream ocaml中的流真的被使用了吗?

Stream ocaml中的流真的被使用了吗?,stream,ocaml,ocaml-lwt,Stream,Ocaml,Ocaml Lwt,查看不同的ocaml项目,我看不到使用过的语言中存在的问题。即使在最近的真实世界Ocaml书中,也没有提到流,这很奇怪 原因是什么?这是因为Lwt还是Core超级种子?我想我很好地回答了这个问题。流可以用于OCaml中的“惰性评估”,特别是因为OCaml是一种急切的语言,如果需要惰性评估(如Haskell中的评估),肯定有一些有用的情况 引用 流实际上在现实生活中很有用。一些应用程序: 从文本读取源文件的编译器 网络套接字 音视频信号处理 语音识别 用收敛级数逼近方程的解 所提供的参考还使用

查看不同的ocaml项目,我看不到使用过的语言中存在的问题。即使在最近的真实世界Ocaml书中,也没有提到流,这很奇怪


原因是什么?这是因为Lwt还是Core超级种子?

我想我很好地回答了这个问题。

流可以用于OCaml中的“惰性评估”,特别是因为OCaml是一种急切的语言,如果需要惰性评估(如Haskell中的评估),肯定有一些有用的情况

引用

流实际上在现实生活中很有用。一些应用程序:

  • 从文本读取源文件的编译器
  • 网络套接字
  • 音视频信号处理
  • 语音识别
  • 用收敛级数逼近方程的解
所提供的参考还使用流惰性地计算素数,这与使用埃拉托斯烯筛计算大素数的常规方法相比非常快。所以我觉得流在语言中肯定有自己的位置,因为它允许在OCaml中进行惰性计算


我的教授用流来解释渴望语言中的懒惰评估概念,在现实世界的OCaml中没有提到它的原因可能是语言本身是渴望的,流与这个概念不平行,流不能是多线程的。(不过,这只是猜测)

流在camlp4语法支持下非常好,如果没有它,它们几乎无法使用。所以,这是很久以前的事了(尽管理论上它仍然可用)。根据Drup的参考,它们甚至将在不久的将来(今年)从核心语言中删除,并且可能会转移到一个独立的库中


这并不是说,流作为一种数据结构有问题。这仍然是许多OCaml项目中使用的一种非常有价值的技术,它们只是使用不同的库来实现这一点。有Core
Sequence
、Batteries
Enum
、Simon Cruanes的
gen
Sequence
软件包、Joseph Abrahamson的
fstream
软件包等等

对于一个谦逊的实践者来说,这个问题需要太多的全知来回答:-)我以前在小项目中使用过流;它们很优雅。Lwt似乎是正交的;Core可能有更好的流实现。@GaintSquid很清楚,您不是在寻找应用程序或流,而是为什么它们没有被“真正”使用?如果是后者,我不知道为什么,但如果是前者,我会回答@正常情况下,这是对的。但我也有兴趣在真正的软件中看到流的应用。这确实很有说服力。尽管他们建议将其作为一个库来消除ocaml本身的依赖性,对吗?请求是反对的。不是移除。这是完全不同的。在任何情况下,是的,它都会被放在编译器之外(希望不再被用于更好的库)。只是吹毛求疵,Simon Cruanes的包是
gen
sequence