На данный момент я боюсь, что нет. Я тоже не нашел очевидного обходного пути.
This ticket документирует перспективы декларирования видов данных, родственных видов, а не типы данных с добротой, наложенными на них. Было бы вполне разумно, если бы конструкторы таких вещей собирали типы, которые вы предлагаете. Мы еще не там, но это не выглядит проблематично.
Мои глаза на большом выигрыше. Я бы хотел, чтобы * был совершенно разумным типом значений времени выполнения, так что вид, который вы хотите, мог бы существовать путем продвижения по службе, как и сегодня. Объедините это с обсуждаемым понятием типа pi
(непараметрическая абстракция над частью языка, которая эффективно разделяется типами и значениями), и мы можем получить более прямой способ сделать абстракции ad hoc, чем у нас с Data.Typeable
. Обычный forall
останется параметрическим.
Могут ли цели Бога Айзена сформулировать цели с его зависимым проектом GHC, чтобы соответствовать вашим целям? – Carl