Вот простой пример, который не скомпилирован:
import cats.data.Validated
object Ex {
type FailSlow[A] = Validated[List[String], A]
case class User(name: String, age: Int)
//this works fine:
def validBoth(name:String, age:Int):FailSlow[User] =
Validated.valid[List[String], User](User(name,age))
//this not working:
def validBothNotWorking(name:String, age:Int):FailSlow[User] =
Validated.valid[FailSlow[User]](User(name,age))
}
Кажется, я что-то упускаю из-за псевдонимов типов. Почему в первом случае это работает, а во втором - нет.