Ben EnumeratorT
ve karşılık gelen varsa ben IterateeT
birlikte çalıştırabilirsiniz:
val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c"))
val it: IterateeT[String, Task, Int] = IterateeT.length
(it &= en).run : Task[Int]
Numaralandırıcı monad, yineleme monadından "daha büyük" ise, yinelemeyi eşleştirmek için yineleyiciyi " up
veya daha genel Hoist
olarak" kullanabilirim:
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]
Ancak yineleme monitörü numaralandırma monadından "büyük" olduğunda ne yapmalıyım?
val en: EnumeratorT[String, Id] = ...
val it: IterateeT[String, Task, Int] = ...
it &= ???
Bunun bir Hoist
örneği EnumeratorT
ya da bariz bir "kaldırma" yöntemi yoktur.
Enumerator
sadece etkili bir kaynaktır, değil mi? Ben sağlayabilmektedir bir şey kullanmak gerekir gibi geliyor A
beslemesine Task[A]
.
Enumerator
gerçekten etrafında sarıcı olduğunuStepT => IterateeT
siz "adım aşağı" gerekir önerir, aStepT[E, BigMonad, A]
.