【问题标题】:Type class constraint on type family instances类型族实例的类型类约束
【发布时间】:2014-10-02 20:35:34
【问题描述】:

是否可以指定一个类型族的所有实例都必须满足的类型类约束?

例如,给定以下声明,我将如何确保所有实例也是 Eq 的实例:

data family Channel c :: *

非常感谢,

迈克尔

【问题讨论】:

    标签: haskell types typeclass type-families


    【解决方案1】:

    这是你要找的吗?

    {-# LANGUAGE FlexibleContexts, TypeFamilies, FlexibleInstances #-}
    
    -- Data family inside a class so that we can add an extra Eq constraint
    class Eq (Channel c) => MyClass c where
        data Channel c :: *
    
    -- A simple toy instance
    instance MyClass Int where
        data Channel Int = CI Int deriving Eq
    
    -- A more complex instance with separate Eq instance
    instance MyClass Char where
        data Channel Char = CC Char
    
    instance Eq (Channel Char) where
       (CC x) == (CC y) = x == y
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 2015-09-06
      • 2012-09-06
      • 2016-10-28
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多