Functor,Applicative,Monad


这是函数式编程内的三个重要概念,本人在接触swift函数学习时接触,彻底搞蒙了,后来又看了多篇文章以后才搞明白,在此只是表述下自己的理解。

唐巧的博客一
唐巧的博客二
雷纯锋的博客

个人认为雷纯锋的介绍较容易理解,但俩者可结合看,形成自己的见解


首先明确三种类型都是一种值数据类型

Functor

接收一个上下文中的值,应用一函数,得到一个上下文中的值
注:接收的是上下文中的值,值存在,相当于接受一个普通值,返回一个普通值;值不存在,则返回空,因值的不确定性,故称为上下文中的值。

Applicative

接收一个上下文中的值,应用一上下文的函数,得到一上下文中的值
住:与Functor区别在于函数也是不确定的,可有可无,故也是上下文的函数

Monad

接收一个上下文中的值,应用一个接收普通值但是返回上下文中的值的函数,得到一个上下文中的值。
注:此与Functor极为相似,区别在于应用的函数,Functor应用的函数是:接收一个普通值返回一个普通值,Monad:应用的函数是:接受一个普通值返回一个上下文中的值。

看那么多都绕晕了,一定要学好语文,区分好主谓宾,去掉定状补,概念就明了了~~


看!灰机~灰机灰过去了~灰机又灰回来了~~

推荐阅读更多精彩内容