是否有功能/库/技术可以帮助为 TH 生成的实例生成正确/非冗余的上下文?

yai*_*chu 5 haskell typeclass template-haskell

是否有一个函数可以接受给定的上下文/[Pred]并简化它?

我的意思的一些例子:

  • 如果上下文包含Eq [a]将其替换为Eq a(因为它意味着更复杂的约束)
  • 如果上下文包含 Eq Int,过滤掉
  • 删除重复项

用例:我已经实现了TH 函数来派生实例,而这些实例又使用类似的东西fmap它们需要上下文之,并且我想生成不会生成冗余约束警告的实例。

我已经做了一个simplifyContext :: [Pred] -> Q [Pred]助手来做到这一点,但在我看来这听起来像是一个普遍的需求,我希望这可能已经存在于某个图书馆中,但我已经尝试找到它但还没有。或者,如果它不存在,那可能是因为我缺少一种更简单的技术..