从初始值

时间:2015-09-18 22:26:04

标签: scalaz scalaz-stream

我有一个功能f和一个频道c

def f(i: Int) = Task.now(i + 1)

val c = channel.lift(f)

我想继续将函数f任意次数(或无限期地)应用于先前计算的输出。我提供初始值。

我可以定义流程p

val p = Process.emit(1).through(c)

但这只会被执行一次。

如何继续将c应用于上次计算的输出?

1 个答案:

答案 0 :(得分:0)

我可以使用iterateEval[F[_], A](start: A)(f: A => F[A])函数来执行此操作

val p = Process.iterateEval(1)(f).take(10)