看到函数式编程相关的资料的时候, 总是看到 Monad 这个词, 一直想了解一下, 然而查资料对 Monad 的定义往往是上来一大堆数学概念:
Monad 是一个自函子范畴上的幺半群
鉴于本人数学基础实在太差...为了解决这个问题, 我们使用和刚刚一样的 方法: 定义下面的辅助函数
def unit(e):
return e
def bind(e, f):
return None if e is...在 第二个例子中, 我们想要记录中间值, 而在第三个例子中, 我们想要加入 Null/None 检测.
命令式解法
在上面的例子中, 我们首先使用了直观的命令式解法....为了实现更优雅的方案, 在上面的例子中, 我们使用了一种设计模式, 包含了 unit 和 bind 两种函数. 这种设计模式就叫做 Monad....使用这个模式, 配合上不同的 unit 和 bind 函数, 我们可以实 现多种不同的函数组合.