从初始值应用通道 N 次

Apply a Channel N times from an initial value

我有一个函数 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 应用于上次计算的输出?

我可以使用 iterateEval[F[_], A](start: A)(f: A => F[A]) 函数来做到这一点

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