по-другому стоит.
Есть некая функциональность, которая, по идее, может работать для разных типов данных. Хочется, чтобы эта функциональность про мои клиентские типы данных ничего не знала, а я мог их добавлять независимо друг от друга.
Если никакого другого требования нет, подойдут обычные type class.
Но оно появляется: хочется, чтобы с любым моим клиентским типом я мог таскать дополнительный тип данных, о котором только конкретный клиентский тип и знает.
Как сделать так, чтобы эта вот функциональность, которая раньше рассказывала с помощью type class только про клиентский тип, еще могла и знать, что там будет какой-то тип-спутник?
Можно воспользоваться функциональной зависимостью (FunctionalDependencies)
А можно взять type family
ну да это assiciated types, которое type families in disguise
Обсуждают сегодня