这是我之前的问题的后续。看来我还是没明白。现在我正在尝试编写返回Writer monad 的函数。
scala> val f = {x:Int => Writer("doing " + x + ";", x + 1)}
f: Int => scalaz.WriterT[scalaz.Id.Id,String,Int] =
scala> Kleisli(f) >=> Kleisli(f)
:16: 错误: 没有适用于方法的类型参数: (f: A => M[B])scalaz.Kleisli[M,A,B] 在对象 Kleisli 中存在,因此它可以应用于参数 (Int => scalaz .WriterT[scalaz.Id.Id,String,Int])
- - 因为 - -
参数表达式的类型与形参类型不兼容;
发现:Int => scalaz.WriterT[scalaz.Id.Id,String,Int]
必需:?A => ?M
克莱斯利(女) >=> 克莱斯利(女)
为什么不编译?