我有時候在看Scalaz,覺得很難理解一個初學Scala程序員。爲什麼Scalaz使用複雜的符號並且沒有代碼文檔?
implicit def KleisliCategory[M[_]: Monad]: Category[({type λ[α, β]=Kleisli[M, α, β]})#λ] = new Category[({type λ[α, β]=Kleisli[M, α, β]})#λ] {
def id[A] = ☆(_ η)
def compose[X, Y, Z](f: Kleisli[M, Y, Z], g: Kleisli[M, X, Y]) = f <=< g
}
implicit def CokleisliCategory[M[_]: Comonad]: Category[({type λ[α, β]=Cokleisli[M, α, β]})#λ] = new Category[({type λ[α, β]=Cokleisli[M, α, β]})#λ] {
def id[A] = ★(_ copure)
def compose[X, Y, Z](f: Cokleisli[M, Y, Z], g: Cokleisli[M, X, Y]) = f =<= g
}
對於有經驗的函數式程序員來說,斯卡拉斯方法可能看起來很明顯,但對其他任何人來說都很難理解。
爲什麼Scalaz代碼中的文檔很少?
爲什麼他們使用這麼多的操作員,大多數人無法閱讀? 我甚至不知道如何在沒有複製/粘貼的情況下輸入★
或☆
。這只是一個例子,因爲有很多。
有人說斯卡拉茲在開始時是不可讀的,但2年後他們發現它很棒。 我不知道從哪裏開始Scalaz。斯卡拉驗證似乎是最簡單的部分,但之後呢?
據我所知,大多數特殊符號有一個詳細的,非Unicode伴侶。斯卡拉斯模仿哈斯克爾,許多符號來自哈斯克爾的土地(所以下一個問題是[*爲什麼哈斯克爾使用這麼多符號*](http://ro-che.info/ccc/15.html))。而且我個人認爲*初學者* scala程序員不應該使用scalaz。 –
@ om-nom-nom我明白了。我說我是一個Scala初學者,這是我的觀點,但是我正在關注Coursera的Martin Odersky課程,閱讀這本書,現在使用它3個月,來構建一個即將在生產中的真實世界web應用程序。我只是想知道什麼時候應該嘗試使用/理解Scalaz,因爲直到我不明白爲止,我會一直考慮自己是一個Scala初學者:) –
scalaz與無形狀相同,可能下一次會出現一個用於Scala中詳盡宏觀編程的庫。所有這些部分在一起,他們不是Scala的用戶核心的一部分 - 他們是實驗來證明什麼是可能的,以及如何抽象到新的水平。一個人可以說他/她是一名高級Scala程序員,但他無法理解Scala的高階部分 - 這也是Odersky在他的[Scala levels]中所說的(http://www.scala-lang.org/節點/ 8610)。 – sschaef