Предположим, у нас есть следующие типы:
sealed trait T
case object Goat extends T
case object Monk extends T
case object Tiger extends T
Теперь, как построить коллекцию T
таким образом, что по крайней мере один из каждого под- T
появляется в коллекции, это ограничение применяется во время компиляции? Коллекция, в которой, вопреки этому:
val s:Seq[T] = Seq(Goat)
, который компилируется, этот:
val ts:TotalSeq[T] = TotalSeq(Goat, Goat, Tiger)
- нет. Я использовал Scala выше, но я был бы рад увидеть решения и на других языках.
(Простите меня, если мои слова немного нечеткие; я простужен и сегодня развлекаюсь головоломками.)