问题标签 [iterate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Iteratees和FRP之间有什么联系?
在我看来,这两个想法之间有很强的联系。我的猜测是,如果有一种方法可以用 Iteratees 表达任意图,那么 FRP 可以用 Iteratees 来实现。但是 afaik 他们只支持链状结构。
有人可以对此有所了解吗?
scala - Scala迭代写入文件
我有一个方法save
可以Iteratee
it
将一些数据保存到it
. 在该方法内部,数据可用作生成字节数组块的枚举器。
需要:调用save
以使其将数据写入FileOutputStream
.
我尝试了以下方法,但不确定这是否可行:
问题:这是它应该做的方式吗?我担心这不会总是关闭流(例外情况)。
我正在使用Play Framework 2.1 中的 Play Framework Iteratee 库(它使用 Scala 期货)。
scala - Play 2 Scala 使用几个枚举器(PatchPannel?)提供一个 Websocket 输出 Iteratee
我想逐步为 WebSocket 输出 Iteratee 提供几个枚举器(例如,当我通过 Websocket 输入 iteratee 接收到特定事件时,我想向输出 Iteratee 添加一个特定的枚举器)。
如果我是对的,如果我只是(in,out)
在 Websocket 函数参数的末尾返回,这是不可能的,因为 out 已经是一个不可变的枚举器:
我认为 Concurrent.PatchPannel 是我正在寻找的,但我无法理解如何使用它。有没有人有使用 Concurrent.PatchPannel 的例子?(如果这确实是我正在寻找的)。
谢谢
scala - Scala Play 中如何管理状态!2.0 网络套接字?
我正在查看https://github.com/playframework/Play20/tree/master/samples/scala/websocket-chat上的示例
要制作 websocket 控制器,您可以编写如下内容:
Chatroom.join 返回一个scala.concurrent.Future[(Iteratee[JsValue,_],Enumerator[JsValue])]。但是 Play 中使用的迭代器和枚举器在哪里!框架?WebSocket类(WebSocket.scala)似乎忽略了输入:
怎么玩!在 iteratee 消耗输入时管理不断变化的状态?
functional-programming - 使用 Play 2 Iteratees 时如何从 List[T] 中获取 Enumerator[T]
我对 Play 2 很陌生,正在尝试 Iteratees。
Q1。我怎样才能得到一个Enumerator[Person]
from List[Person]
?
Q2。当我尝试将一个传递Enumerator(Option[String])
给Ok.stream
我时,我在控制台上收到一个错误,指出
无法将 Option[String] 的实例写入 HTTP 响应。尝试定义一个 Writeable[Option[String]]
有人可以指出我如何为自定义类型定义可写到 HTTP 响应的正确方向吗?
谢谢。
scala - Scala 有哪些开发良好的迭代/管道库?
Scala 是否有任何以 Haskell 管道的精神开发的库,或者至少是 iteratee?
我首先找到了 Play 的 iteratee 库,但我无法让它工作,而且它似乎与 Play 的并发原语紧密耦合Promise
,这在许多情况下可能不合适。
Scalaz 有一些迭代支持(如IterV),但似乎只有核心类没有额外的支持函数、预定义的迭代/枚举器等。我也找不到任何文档,即使 scaladoc 非常稀疏,所以很难正确使用。
而且我找不到任何类似于管道的东西。
java - Scala和Java中的枚举器与迭代器
枚举器和迭代器有什么区别?根据我的理解,这在 JavaEnumerator
中并不是一个花哨的别名。enum
相反,它似乎是一种类似于Iterator
. 那么有人能够比较和对比Enumerator
吗Iterator
?Play
另外,我在as中看到了一个用法
编辑:
我倾向于认为这Enumerator
为我们提供了实际的数据块,而Iterator
为我们提供了指向已经分块的数据的指针,例如列表。但我不相信情况确实如此。
json - 需要帮助,访问更多级别的 json/twitter 搜索
我正在使用来自@diegolparra 的示例来进行推特搜索和/或流式传输。
此示例从 twitter 搜索字段的结果中获取 from_user_name 和 text。现在我需要访问 created_at 日期和另一个级别(节点用户)以从用户获取:profile_image_url 和 lang。
请问,有什么帮助吗?
谢谢。
scala - 如何在不溢出堆栈的情况下将 IO 与 Scalaz7 Iteratees 一起使用?
考虑这段代码(取自此处并修改为使用字节而不是字符行)。
在一个大小合适的文件 (8kb) 上运行此代码会产生 StackOverflowException。一些搜索发现可以通过使用 Trampoline monad 而不是 IO 来避免异常,但这似乎不是一个很好的解决方案 - 牺牲功能纯度来让程序完全完成。解决这个问题的明显方法是使用 IO 或 Trampoline 作为 Monad Transformer 来包装另一个,但我找不到它们中任何一个的 Transformer 版本的实现,而且我还不足以成为一个函数式编程大师知道如何编写我自己的(了解更多关于 FP 是这个项目的目的之一,但我怀疑创建新的 monad 转换器目前有点超出我的水平)。我想我可以围绕创建、运行和返回我的迭代的结果来包装一个大的 IO 操作,
大概有些 monad 不能转换为 monad 转换器,所以我想知道是否可以在不丢弃 IO 或溢出堆栈的情况下处理大文件,如果可以,如何?
额外的问题:我想不出任何方法让迭代者在处理时发出信号,表示它在处理时遇到了错误,除了让它返回 Either,这使得组合它们变得不那么容易。上面的代码展示了如何使用 EitherT 来处理枚举器中的错误,但是这对迭代器是如何工作的呢?
scala - Scalaz 7 Iteratee 处理大型 zip 文件 (OutOfMemoryError)
我正在尝试使用 scalaz iteratee 包来处理恒定空间中的大型 zip 文件。我需要对 zip 文件中的每个文件执行一个长时间运行的过程。这些过程可以(并且应该)并行运行。
我创建了一个EnumeratorT
将每个膨胀ZipEntry
成一个File
对象。签名看起来像:
我想附加一个IterateeT
将对每个文件执行长时间运行的过程。我基本上得到了类似的东西:
当我尝试运行它时:
我收到一条java.lang.OutOfMemoryError: Java heap space
消息。这对我来说很有意义,因为它试图建立一个庞大的列表来存储所有这些IO
和Promise
对象。
几个问题:
- 有人对如何避免这种情况有任何想法吗?感觉就像我错误地解决了这个问题,因为我真的只关心
longRunningProcess
它的副作用。 - 这里的
Enumerator
方法是错误的方法吗?
我几乎没有想法,所以任何事情都会有所帮助。
谢谢!
更新#1
这是堆栈跟踪:
我目前正在接受 nadavwr 的建议,以确保一切都像我想的那样。我会报告任何更新。
更新#2
使用以下两个答案的想法,我找到了一个不错的解决方案。正如 huynhjl 建议的那样(我使用 nadavwr 的分析堆转储的建议进行了验证),consume
导致每个膨胀ZipEntry
都保存在内存中,这就是进程内存不足的原因。我更改consume
并foldM
更新了长时间运行的过程,只返回 aPromise[IOE[Unit]]
而不是对文件的引用。这样我最后就有了所有 IoExceptions 的集合。这是工作解决方案:
此解决方案会在异步上传每个条目时对它们进行膨胀。Promise
最后,我有一个包含任何错误的已完成对象的巨大列表。我仍然不完全相信这是对 Iteratee 的正确使用,但我现在确实有几个可重用、可组合的部分,可以在我们系统的其他部分中使用(这对我们来说是一种非常常见的模式)。
感谢你的帮助!