如何将部分应用的函数类型转换为仿函数?

时间:2016-11-12 06:56:59

标签: haskell types

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声明中

如何使其有效?

1 个答案:

答案 0 :(得分:0)

Alex建议:

{{1}}

谢谢Alex