【发布时间】:2016-09-30 16:55:23
【问题描述】:
假设我有一个多态类型,其中一个参数是更高种类的类型 (* -> *)。
data Tricky m = Tricky { numbers :: m Int, genesis :: m String }
是否有一种通用方法可以在不使用神秘和不安全的语言扩展的情况下为此类类型派生实例?
我尝试启用 StandaloneDeriving 以便我可以指定上下文:
deriving instance Show (m Int) => Show (Tricky m)
但是 GHC 然后抱怨约束不小于实例头,并将我指向UndecidableInstances 的方向。
总结一下:
1.我应该简单地接受这个建议,还是有更好的方法?
2.是否有任何建议可以简化此过程?
3. 想要派生“更高种类”的实例是不是有点错误?为一些具体类型派生实例会更好吗(例如Vector、[]、Set)
【问题讨论】:
标签: haskell ghc type-kinds