数据类型定义中的类约束

时间:2014-12-02 21:33:47

标签: haskell type-families

我无法进行以下编译:

class Typeable f => Foo f where
    data Bar :: Typeable

换句话说,我想定义一个类Foo,它具有必须是Typeable实例的关联类型。

看起来我可以使用FunctionalDependencies定义相同的内容:

class (Typeable b,Typeable f) => Foo f b | f -> b where

那么我怎么能用TypeFamilies做同样的事情?

1 个答案:

答案 0 :(得分:3)

我还没有检查过,但我相信这应该有效:

class (Typeable f, Typeable (Bar f)) => Foo f where data Bar f :: *