タグ付けされた質問 「iterate」

1
Scalazが反復する:「大きい」モナドの「IterateeT」に一致するように「列挙」Tを「持ち上げる」
EnumeratorTと対応するものがあれば、IterateeT一緒に実行できます: val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c")) val it: IterateeT[String, Task, Int] = IterateeT.length (it &= en).run : Task[Int] 列挙モナドがiterateeモナドよりも「大きい」場合、私は一致するようにiterateeを使用するupか、より一般的にHoistは「持ち上げ」ます。 val en: EnumeratorT[String, Task] = ... val it: IterateeT[String, Id, Int] = ... val liftedIt = IterateeT.IterateeTMonadTrans[String].hoist( implicitly[Task |>=| Id]).apply(it) (liftedIt &= en).run: Task[Int] しかし、iterateeモナドが列挙子モナドよりも「大きい」場合、どうすればよいでしょうか。 val en: EnumeratorT[String, …

1
Scalaz 7のzipWithIndex / group列挙子によるメモリリークの回避
バックグラウンド この質問で述べたように、私はScalaz 7反復を使用して、一定のヒープスペースでデータの大規模な(つまり、制限のない)ストリームを処理しています。 私のコードは次のようになります: type ErrorOrT[M[+_], A] = EitherT[M, Throwable, A] type ErrorOr[A] = ErrorOrT[IO, A] def processChunk(c: Chunk, idx: Long): Result def process(data: EnumeratorT[Chunk, ErrorOr]): IterateeT[Vector[(Chunk, Long)], ErrorOr, Vector[Result]] = Iteratee.fold[Vector[(Chunk, Long)], ErrorOr, Vector[Result]](Nil) { (rs, vs) => rs ++ vs map { case (c, i) => processChunk(c, i) …
106 scala  scalaz  iterate 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.