ᛒ
Size: a a a
λ
P
ᛒ
λ
P
λ
λ
P
ᛒ
λ
SK
SK
sealed trait PasswordError
object PasswordError{
case class TooShort(required: Int) extends PasswordError
case class ToesNotContain(chars: String) extends PasswordError
}
sealed trait LoginError
object LoginError{
case class TooLong(maxLength: Int) extends LoginError
case object BadFormat extends LoginError
}
def validateLogin(login: String): ZIO[HasLoginConfig, LoginError, Unit]
def validatePassword(pass: String): ZIO[HasPasswordConfig, PasswordError, Unit]
def validateUser(user: User) =
validateLogin(user.login) *> validatePassword(user.pass)
// ZIO[
HasLoginConfig & HasPasswordConfig,
LoginError | PasswordError
, Unit]
w
P
ΛВ
P