这个要求从上面Free[F,A]类型里的map,flatMap可以了解:我们用了implicit F: Functor[F]参数,因为必须有个Functor实例F才能实现map和flatMap。...21 case class Suspend[F[_],A](ffa: F[Free[F,A]]) extends Free[F,A]
Free类型的resume函数与Trampoline的基本一致,只有返回类型和增加了参数...实际上Free Monad的Suspend处理可以是很复杂的,包括返回结果及接受输入等任何组合。...(g) => Get( s => f(g(s)) )
4 case Put(s,a) => Put(s, f(a))
5 }
6 }...注意:Get(f) 返回 StateF[S,A],StateF是个Functor, F[Free[F,A]]那么A就是Free[F,A]
还是试试运算那个zipIndex函数:
1 def zipIndex