9
我想在Scala中使用>=>
(Kleisli箭頭)。據我瞭解,它構成了返回monad的函數。現在我試試看如下:如何在Scala中使用> =>?
scala> val f = {i:Int => Some(i + 1)} f: Int => Some[Int] = <function1> scala> val g = {i:Int => Some(i.toString)} g: Int => Some[String] = <function1> scala> val h = f >=> g <console>:15: error: value >=> is not a member of Int => Some[Int] val h = f >=> g ^
爲什麼不編譯?如何撰寫f
和g
與>=>
?
謝謝!很好的解釋:)我不完全明白爲什麼我需要這個'Kleisli'包裝。這僅僅是一些_technicality_還是真正的主要的東西? – Michael
這是一個設計決定 - 你可以肯定地使用一個隱式類來添加'> =>'給任何舊的'A => M [B]'。我可以推測這個決定的原因,但這對斯卡拉茨郵件列表來說是一個更好的問題。 –