相关疑难解决方法(0)

为什么Promises Monads?

我一直在学习函数式编程,并且遇到了Monads,Functors和Applicatives.

根据我的理解,以下定义适用:

a)(A => B)=> C [A] => C [B] | 函子

b)(A => C [B])=> C [A] => C [B] | 单子

c)(C [A => B])=> C [A] => C [B] | 合用的

(参考:https://thedet.wordpress.com/2012/04/28/functors-monads-applicatives-can-be-so-simple/)

此外,我了解Monad是Functor的一个特例.在中,它应用一个函数,该函数将包装值返回到包装值并返回包装值.

当我们使用时Promise.then(func),我们传递Promise(即C [A])一个通常具有签名A => B并返回另一个Promise(即C [B])的函数.所以我的想法是,Promise只是一个Functor而不是Monad,因为func返回B而不是C [B].

然而,谷歌搜索我发现Promise不仅是一个Functor,也是一个Monad.我想知道为什么,因为func不会返回包裹值C [B]但只是B.我错过了什么?

javascript monads functional-programming functor es6-promise

22
推荐指数
4
解决办法
6141
查看次数