gpt4 book ai didi

scala - 如果单位 = 成功, `Try` 是单子(monad)吗?

转载 作者:行者123 更新时间:2023-12-04 11:36:49 27 4
gpt4 key购买 nike

unit = Try , Try不是单子(monad),因为左单位法失败了。

 Try(expr) flatMap f  !=  f(expr)

但是问题变成了:是 Try吗?一个单子(monad),如果 unit = Success ?

在这种情况下:
 Success(expr) flatMap f  ==  f(expr)

所以它是一个单子(monad)。

我的理解正确吗?

最佳答案

在 coursera 论坛中从 Alexey 的帮助中得到了答案:
unit = Success ,对于左单位定律:

Success(throw new Exception) flatMap f == f(throw new Exception) // holds
Success(s) flatMap (x => throw new Exception) == Failure(new Exception) // does not hold
它实际上又输了,当然除非您重新定义 flatMap 以重新抛出异常,从而失去 Try 的主要功能。

关于scala - 如果单位 = 成功, `Try` 是单子(monad)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716205/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com