这是我之前的问题的后续。看来我还是没明白。现在我正在尝试编写返回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 克莱斯利(女) >=> 克莱斯利(女)
为什么不编译?