Я иногда смотрю на Scalaz и считаю это довольно трудным для начинающего программиста Scala.
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 года они находят это замечательным. Интересно, с чего начать с Scalaза. Валидация Scala кажется самой легкой частью, но после этого?