Было бы круто не обращаться по .at[Nat], а что-то наподобие паттерн матчинга sealed trait-a.
Аналог паттерн матчинга будет, наверное, Poly1
shapeless.:+: - это силд трейт, вы можете его матчить, правда, скорее всего вам не понравится писать case InjectL(...) => case InjectR(InjectL(...)) => case InjectR(InjectR(InjectL(...))) => ...
Обсуждают сегодня