我想为类约束创建同义词,如下面的(非常简化的)示例
{-# LANGUAGE ConstraintKinds #-}
type Foo = Functor
data MyFunctor a = MyFunctor
instance Foo MyFunctor where
fmap _ _ = MyFunctor
但我得到fmap is not a (visible) method of class Foo
。
似乎我应能够这样做,因为the GHC documentation说“...标准约束,元组同义词允许在实例上下文中使用这两种约束超”。我正在使用GHC 7.6。
答案 0 :(得分:4)
GHC文档中的这些陈述不涵盖您的案例。使用Foo
的实例上下文类似于:
instance Foo a => Bar a
超类会是这样的:
class Foo a => Bar a
即。您正在定义其他类或实例,Foo
/ Functor
是其中一项要求。在这里,您实际上是在尝试定义Functor
本身,您必须使用真实的类名。