[英]How does this Haskell code work? fmap fmap (,) <*> Just . reverse
[英]How does fmap work for List
了解一下haskell给出了Functor类型类的描述。
我可以看到,对于列表,它的实现如下:
instance Functor [] where
fmap = map
但这是如何工作的?
在类型类Functor中,fmap甚至没有实现。 所有它只是这样的类型声明:
class Functor f where
fmap :: (a -> b) -> f a -> f b
只是通过类型声明,Haskell如何正确地找出列表的映射操作?
map
只是一个普通函数,类型为(a -> b) -> [a] -> [b]
。 与fmap
不同,它不是 Functor
类型类的一部分。 它完全符合您的想法。
类型类背后的想法是您使用类型来确定要使用的实现。 当我们说instance Functor [] where ...
,我们告诉编译器[]
(列表类型)的fmap
实现是什么。
在这种情况下, fmap
的实现只是map
,这是一个普通的函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.