如何使仿函数的函数类型构造函数实例?重复实例

How to make the function type constructor instance of functor? Duplicated instance

我正在尝试做 typeclassopedia 中的练习,但我没有足够的知识来创建一个行为类似于函数的数据类型。

第一个练习说:"Implement Functor instances for Either e and ((->) e)."

我想我了解类型构造函数,但我不了解这个具体案例。

我不知道在哪里可以找到信息,我在 Google 中搜索过但失败了。

这是我的尝试,但是 GHC-base 中已经定义了 (->) r a 类型。

我如何创建一个像函数一样运行的 data X y w = ...

这是我未编译的代码:

instance Functor ((->) r) where
  fmap f g = (.)

为已有实例编写新实例的规范方法是将其包装在 newtype:

newtype Function a b = Function { getFunction :: a -> b }

instance Functor (Function a) where
  ...