繁体   English   中英

fmap如何为List工作

[英]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.

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