当前位置:  开发笔记 > 编程语言 > 正文

什么是错误的实例Functor Int在哪里

如何解决《什么是错误的实例FunctorInt在哪里》经验,为你挑选了1个好方法。

什么是错误的实例Functor Int在哪里

instance Functor Int where
  fmap f a = f a

期待的......

我不能使monad int,applicative int,functor int



1> Zeta..:

什么是如此有趣Maybe a,[a],Either e a,IO a?该类型需要一个额外的参数.也就是说,Maybe它本身不是一种类型.你必须使用另一种类型,例如Int实际获得一种类型:Maybe Int.

我们来看看它Functor的定义:

class Functor f where
    fmap :: (a -> b) -> f a -> f b
              --        ^^^    ^^^

无论你使用什么,都f必须能够使用一种类型.而且Int Int还是Int ()不是一个类型,因为Int已经处于一种*.你不能通过申请Int其他东西来构建另一种类型.

Maybe另一方面是善良的* -> *.它需要一个类型(例如Double)并返回一个类型,Maybe Double:

-- using pseudo kind-signatures
Maybe        :: * -> *
Double       :: *
Maybe Double ::      *

所有这一切,因为我们f采取a了签名fmap.

所以不行.你不能使任何常规类型(实物*)成为Functor.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有