我无法进行以下编译:
class Typeable f => Foo f where
data Bar :: Typeable
换句话说,我想定义一个类Foo
,它具有必须是Typeable
实例的关联类型。
看起来我可以使用FunctionalDependencies
定义相同的内容:
class (Typeable b,Typeable f) => Foo f b | f -> b where
那么我怎么能用TypeFamilies
做同样的事情?
答案 0 :(得分:3)
我还没有检查过,但我相信这应该有效:
class (Typeable f, Typeable (Bar f)) => Foo f where data Bar f :: *