简单地说Java程序员的Monad

这个单词单子在提及或讨论功能编程时经常使用。 这个术语有几种解释,但是即使最简单的一种,也倾向于使用范畴论或至少依赖于基本的函数式编程背景来解释。

最近,我为自己发现,实际上不需要做的所有事情,仅使用Java程序员一定会熟悉的概念和概念,就可以向他们解释monad。 该解释并不假装是精确的或绝对正确的。 其目的是提供一般理解。

那么,什么是单子?

Monad是:

  • 某些值的容器设计模式

我想“容器”部分很清楚。 因此,让我们进入“设计模式”部分。

与不可变的POJO相比,Monad是一种“控制反转”。 对于POJO,您可以调用getter来获取值并使用该值执行所需的操作。 POJO无法控制该用途。 对于monad,您提供“处理功能”并将其传递给某些monad方法。 然后,处理结果以某种形式返回给调用方。

这种反转为monad提供了如何执行处理的完全控制权,并实现了很多可能性。

例如,如果monad中存储的值实际上丢失了,它可以避免调用处理(也许单子)。

或仅在存储值是特定类型之一(要么monad),并省略其他处理,依此类推。

还要注意,Monad不会直接(也不通过getter)公开存储的值,在某些情况下这是不可能的。 这实现了一些实现,例如Java 8中引入的可选的不是完全单子。

from: https://dev.to//siy/monads-for-java-programmers-in-simple-terms-1959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值