Т8
Size: a a a
Т8
DS
DS
DS
HKT тут - чтобы реализовать кучу хелперов один раз для тайпкласса какого-нибудь функтора, а потом переиспользовать между всеми их реализациями
DS
DS
DS
DS
DS
Т8
Т8
DS
DS
Т8
Dv
Dv
Dv
DS
// В реальности конфиги на много десятков полей суммарноЛибо оставляем только опциональную и нам в бизнес логике придется руками постоянно кастовать значения из нуллябельных в не нуллябельные тем или иным способом.
final case class Config(address : String, featureConfig: FeatureConfig, ...)
final case class FeatureConfig(...)
final case class OptionalConfig(address: Option[String], featureConfig: Option[OptionalFeatureConfig])
final case class OptionalFeatureConfig
def merge(example: Config, external: OptinalConfig): Config = ???
final case class Config[F[_]](address : F[String], featureConfig: F[FeatureConfig[F]], ...)
def merge(example: Config[Id], external: Config[Option]): Config[Id] = ???
Dv
DS