【问题标题】:How does fmap work for Listfmap 如何为 List 工作
【发布时间】:2013-04-02 21:09:35
【问题描述】:

Learn you a haskell 给出了关于 Functor 类型类的描述。

我可以看到,对于列表,它的实现如下:

instance Functor [] where  
fmap = map  

但是这是如何工作的呢?

在类型类 Functor 中,fmap 甚至没有实现。它所拥有的只是这样的类型声明:

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

仅通过类型声明,Haskell 如何正确计算 List 的映射操作?

【问题讨论】:

标签: haskell functor


【解决方案1】:

map 只是一个类型为(a -> b) -> [a] -> [b] 的普通函数。与fmap 不同,它不是Functor 类型类的一部分。它完全按照您的想法工作。

类型类背后的想法是您使用类型来确定要使用的实现。当我们说instance Functor [] where ... 时,我们是在告诉编译器fmap[](列表类型)的实现是什么。

在这种情况下,fmap 的实现只是map,这是一个正常的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    相关资源
    最近更新 更多