Đôi khi tôi nhìn vào Scalaz và thấy nó khá khó hiểu đối với một lập trình viên Scala mới bắt đầu.Tại sao Scalaz sử dụng các ký hiệu phức tạp và không có tài liệu trong mã?
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
}
Phương pháp Scalaz có vẻ hiển nhiên đối với người lập trình chức năng có kinh nghiệm, nhưng đối với bất kỳ ai khác thì khó hiểu.
Tại sao có quá ít tài liệu trong mã Scalaz?
Tại sao họ sử dụng quá nhiều toán tử không thể đọc được đối với hầu hết mọi người? Tôi thậm chí không biết cách nhập ★
hoặc ☆
mà không cần sao chép/dán. Và nó chỉ là một ví dụ bởi vì có rất nhiều.
Một số người nói rằng Scalaz không thể đọc được ngay từ đầu, nhưng 2 năm sau họ thấy nó tuyệt vời. Tôi tự hỏi bắt đầu từ đâu với Scalaz. Việc xác nhận Scala có vẻ là phần dễ nhất, nhưng sau đó?
Theo như tôi biết, biểu tượng đặc biệt nhất có một người bạn đồng verbose, không unicode. Scalaz bắt chước Haskell và nhiều biểu tượng đến từ vùng đất Haskell (vì vậy câu hỏi tiếp theo là [* tại sao Haskell sử dụng nhiều ký hiệu *] (http://ro-che.info/ccc/15.html)). Và cá nhân tôi không nghĩ rằng * người mới bắt đầu * lập trình scala nên sử dụng scalaz. –
@ om-nom-nom Tôi hiểu. Tôi nói tôi là một người mới bắt đầu Scala, đó là quan điểm của tôi, nhưng tôi đang theo đuổi các khóa học của Martin Odersky trên Coursera, đọc sách và sử dụng nó trong 3 tháng nay, để xây dựng một ứng dụng web thế giới thực sẽ sớm được sản xuất . Tôi chỉ tự hỏi khi nào tôi nên cố gắng sử dụng/hiểu Scalaz, bởi vì cho đến khi tôi không hiểu nó, tôi sẽ tiếp tục xem xét bản thân mình là một người mới bắt đầu Scala :) –
scalaz là trên cùng cấp như shapeless và có lẽ thời gian tới sẽ có một thư viện để lập trình macro toàn diện trong Scala. Tất cả các bộ phận này cùng nhau, rằng chúng không phải là một phần của lõi người dùng của Scala - chúng là những thí nghiệm để chứng minh những gì có thể và làm thế nào để trừu tượng hóa các cấp độ mới. Một người được phép nói rằng anh ta/cô ấy là một lập trình viên Scala cao cấp mà không thể hiểu được các phần thứ tự cao hơn của Scala - đó cũng là điều mà Odersky đã nói trong [cấp độ Scala] của anh ấy (http://www.scala-lang.org/ nút/8610). – sschaef