繁体   English   中英

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

[英]How do I make the partially-applied function type into a functor?

Learn You a Haskell中有一个示例程序:

instance Functor ((->) a) where
    fmap = (.)

虽然我在编译时遇到问题:

重复的实例声明:

实例Functor(( - >)a) - 在partiallyApplied.hs:6:10中定义

实例Functor(( - >)r) - 在'GHC.Base'中定义

如何重写包代码提供的Haskell类型类实例? 提一下,我应该为Functor的声明定义一个新类型。 我试过但失败了:

newtype Ntype a = N ((->) a)

instance Functor ((->) a) where
    fmap = (.)

•期待“( - >)a”的另一个论点

期望一个类型,但'( - >)a'有种类'* - > *'

•类型'( - >)a'

在数据构造函数'N'的定义中

在'NewType'的newtype声明中

我该如何使它有效?

亚历克斯建议:

newtype Ntype a b = N (a -> b)

instance Functor (Ntype a) where
    fmap f (N g) = N (f . g)

谢谢Alex

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM