Я пытаюсь использовать уточненный для создания интеллектуальных конструкторов на основе примитивов и избегать переносов, поскольку в больших коллекциях могут использоваться одни и те же типы. Я делаю это правильно? Кажется, работает, но немного боулплаты
type ONE_Pred = = MatchesRegex[W....
type ONE = String @@ ONE_Pred
type TWO_Pred = OneOf[...
type TWO = String @@ TWO_PRED
, а затем
case class C(one:ONE, two:TWO)
object C {
def apply(one:String, two:String):Either[String, C] =
(
refineT[ONE_Pred](one),
refineT[TWO_Pred](two)
).mapN(C.apply)
}