为什么“同时”在Haskell中不是单子?

luochen1990

我在读包的文档异步,并试图找到类似于JavaScript的承诺的东西,我觉得Concurrently,这是最贴近的概念,实现FunctorApplicative(Promise.all),Alternative(Promise.race)。但是它没有实现Monad(Promise.then),我想知道为什么。

我认为这可能是因为(>>=)是顺序操作,与名称冲突Concurrently,但这是唯一的原因吗?还有更重要的原因吗?

约瑟夫·西布尔-恢复莫妮卡

Monad类型类的规定,(<*>)并且ap应该是等价的。(<*>)用于同时Concurrently评估LHS和RHS。在完成LHS之前ap无法评估RHS,因为(>>=)需要先完成对LHS的评估,然后才能调用赋予其RHS的函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章