这个例子中的函子是什么?
What is the functor in this example?
我有下面一行代码:
fmap (*2) (*11) 3
我试图理解这个例子中我的仿函数是什么,因为当我检查类型时,我得到了这个:
Prelude> :t fmap (*2) (*11) 3
fmap (*2) (*11) 3 :: Num b => b
而且我在那里没有看到任何类似仿函数的东西。如果我做一个部分应用程序(这就是删除 3 的意思吗?)我得到以下信息:
Prelude> :t fmap (*2) (*11)
fmap (*2) (*11) :: Num a => a -> a
而且我仍然没有看到任何看起来像函子的东西。
我是不是漏掉了什么?
有问题的函子是函数函子。函数函子定义为
instance Functor ((->) a) where
fmap f g = f . g
其中(->) a b ~ a -> b
,只是把->
运算符变成了中缀形式。所以这段代码减少到
(*2) . (*11) $ 3
我有下面一行代码:
fmap (*2) (*11) 3
我试图理解这个例子中我的仿函数是什么,因为当我检查类型时,我得到了这个:
Prelude> :t fmap (*2) (*11) 3
fmap (*2) (*11) 3 :: Num b => b
而且我在那里没有看到任何类似仿函数的东西。如果我做一个部分应用程序(这就是删除 3 的意思吗?)我得到以下信息:
Prelude> :t fmap (*2) (*11)
fmap (*2) (*11) :: Num a => a -> a
而且我仍然没有看到任何看起来像函子的东西。
我是不是漏掉了什么?
有问题的函子是函数函子。函数函子定义为
instance Functor ((->) a) where
fmap f g = f . g
其中(->) a b ~ a -> b
,只是把->
运算符变成了中缀形式。所以这段代码减少到
(*2) . (*11) $ 3