函数编程中functor和monad的形象解释

banq 15-07-15
                   

函数编程中Functor函子与Monad是比较难理解的概念,本文使用了形象的图片方式解释了这两个概念,容易理解与学习,分别使用Haskell和Swift两种语言为案例。

1. 函子functor是一种实现fmap或map的数据类型
2. applicative是一种实现了Applicative 或apply的数据类型
3. monad是一种实现了Monad或flatmap的数据类型.

Haskell的Maybe和Swift的Optional是functor函子 applicative和Monad。那么函子、applicative和Monad三个区别是什么?

1. functor: 应用一个函数到包裹的值,使用fmap/map.
2. applicative: 应用一个包裹的函数到包裹的值。
3. monad: 应用一个返回包裹值的函数到一个包裹的值。



详细原文:
函数编程中functor和monad的形象解释

                   

1
lostalien
2015-07-16 09:51

fmap又是啥。。。

banq
2015-07-16 13:38

2015-07-16 09:51 "@lostalien"的内容
fmap又是啥 ...


fmap相当于一个接口的方法,map这个英文单词不是Map/Collection等名词的意思,通常会以为map类似Java的k-v集合Map,是一个名词,这里mao其实是动词,是代表一个接口的反复,这个map类似Map/reduce中的动词map,是映射的意思:

在数学里,映射则是个术语,指两个元素的集之间元素相互“对应”的关系,为名词;亦指“形成对应关系”这一个动作,动词。

设A、B是两个非空集合,如果存在一个法则f,使得对A中的每个元素a,按法则f,在B中有唯一确定的元素b与之对应,则称f为从A到B的映射,记作f:A→B。


[该贴被banq于2015-07-16 13:40修改过]