這是我以前的question的後續。看起來我仍然沒有得到它。現在我試圖編寫返回作家 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: error: no type parameters for method apply: (f: A => M[B])scalaz.Kleisli[M,A,B] in object Kleisli exist so that it can be applied to arguments (Int => scalaz.WriterT[scalaz.Id.Id,String,Int]) --- because --- argument expression's type is not compatible with formal parameter type; found : Int => scalaz.WriterT[scalaz.Id.Id,String,Int] required: ?A => ?M Kleisli(f) >=> Kleisli(f)
爲什麼不編譯?
'參數表達式的類型與形式參數類型不兼容; 找到:Int => scalaz.WriterT [scalaz.Id.Id,String,Int] 必需:?A =>?M' –