使Vector.Generic成为Functor(和其他类型类)的实例

Uri*_*olz 5 haskell typeclass

我试图使Vector.Generic.Vector成为其他类型类的实例(在我的情况下 - Functor).

我可以满足于向Vector.Unboxed.Vector添加一个Functor实例,但我无法弄清楚它的语法.我最好的尝试是尝试类似的东西:

instance (U.Unbox a, U.Unbox b) => Functor U.Vector where
    fmap = U.map
Run Code Online (Sandbox Code Playgroud)

但编译器(恰当地)抱怨'a'和'b'在'=>之后无处可去.我是否可以为Functor定义这个定义,因为它假设对fmap允许的类型有更多限制?

我在SO中发现的大多数东西都太先进了,所以请温柔:-)

alt*_*ive 8

想想的类型fmap:

fmap :: Functor f => (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

您正在尝试添加约束,a并且b它们都是实例Unbox.这是不可行的,因为fmap完全是通用的,而未装箱的地图Vector特定于实例Unbox.

它不能成为一个Functor.