私は時々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方法は、経験豊富な機能プログラマのための明白に見えるかもしれませんが、他の誰のためにそれを理解するのは難しいです。
なぜScalazコードにはほとんどドキュメントがありませんか?
なぜ彼らは多くの演算子を使用して、ほとんどの人に読めないのですか? コピー/貼り付けなしで★
または☆
と入力する方法がわかりません。それは多くの人がいるため、単なる例です。
一部の人々はScalazは最初は読めないと言っていますが、2年後にはそれはすばらしいことがあります。 Scalazをどこから始めるべきなのだろうか。 Scalaのバリデーションは一番簡単な部分ですが、それ以降は?
私の知る限りでは、ほとんどの特殊記号は冗長、非ユニコードコンパニオンを持っています。 ScalazはHaskellを模倣しており、そのシンボルの多くはHaskellの土地に由来しています(次の質問はHaskellが非常に多くのシンボル*を使用する理由です)(http://ro-che.info/ccc/15.html))。個人的に私は*初心者* scalaプログラマがscalazを使うべきではないと思う。 –
@ om-nom-nomわかりました。私はScalaの初心者だと言いますが、それは私の視点ですが、私はCourseraのMartin Oderskyコースに続き、本を読んで3ヶ月間使って、すぐに実稼働する現実のwebappを構築しています。私はScalazの使い方を理解しようとするべきかどうかは分かりません。なぜなら、私がそれを理解しなくても、Scalaの初心者を考え続けるからです。 –
scalazは型がないと同じレベルにあります。 Scalaの網羅的なマクロプログラミングのためのライブラリ。これらの部分はすべて、Scalaのユーザーコアの一部ではないことがあります。可能なことを証明するための実験であり、新しいレベルに抽象化する方法です。 Scalaの高次の部分を理解することができずに、高度なScalaプログラマであると言えるのは、Odersky氏が[Scalaのレベル]で述べたことです(http://www.scala-lang.org/ノード/ 8610)。 – sschaef