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

时间:2017-01-20 09:10:58

标签: haskell

错误的实例Functor Int在哪里

instance Functor Int where
  fmap f a = f a

期待的那种......

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

2 个答案:

答案 0 :(得分:9)

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

让我们来看看Maybe Int的定义:

Functor

无论您对class Functor f where fmap :: (a -> b) -> f a -> f b -- ^^^ ^^^ 使用什么,都必须能够使用某种类型。 fInt Int不是类型,因为Int ()已经归类Int。通过将*应用于其他内容,您无法构建其他类型。

另一方面,

Int属于Maybe。它需要一种类型(例如* -> *)并返回一个类型Double

Maybe Double

这一切都是因为我们的-- using pseudo kind-signatures Maybe :: * -> * Double :: * Maybe Double :: * f的签名中占用了a

所以没有。您不能将任何常规类型(fmap)设为*的实例。

答案 1 :(得分:0)

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

仿函数f将类型映射到类型 - 它将a映射到f a,将b映射到f b。这意味着f不能是具体类型,如Int;它必须是一种将另一种类型作为参数的类型。您可以将f视为类型函数。