Learn You a Haskell中有一个示例程序:
instance Functor ((->) a) where
fmap = (.)
虽然我无法编译它:
重复的实例声明:
实例Functor(( - >)a) - 在partiallyApplied.hs中定义:6:10
实例Functor(( - >)r) - 在'GHC.Base'中定义
如How do you override Haskell type class instances provided by package code?所述,我应该为Functor
的声明定义一个新类型。我试了但是失败了:
newtype Ntype a = N ((->) a)
instance Functor ((->) a) where
fmap = (.)
•再考虑'( - >)a'
的另一个论点预期类型,但'( - >)a'有种类'* - > *”
•类型'( - >)a'
在数据构造函数'N'
的定义中在'NewType'
的newtype声明中
如何使其有效?