Я понимаю, что, когда
instance (Foo a) => Bar a
instance (Xyy a) => Bar a
GHC не рассматривает контексты, и экземпляры сообщаются как дубликаты.
Что является противоречивым, что (я думаю), после выбора экземпляра, все равно нужно проверить, соответствует ли контекст, а если нет - отменить экземпляр. Итак, почему бы не изменить порядок и отбросить экземпляры с несогласованными контекстами и продолжить работу с оставшимся набором.
Неужели это будет трудноразрешимым? Я вижу, как это может привести к более высокой разрешающей способности работы, но так же, как есть UndecidableInstances
/IncoherentInstances
, не может быть ConsiderInstanceContexts
, когда "Я знаю, что делаю"?