Lean 函数式编程

4. 单子🔗

在 C# 和 Kotlin 中,?. 运算符是一种在可能为空的值上查找属性或调用方法的方式。 如果接收者是 null,则整个表达式为空。 否则,底层的非 null 值接收该调用。 ?. 的使用可以串联起来;在这种情况下,第一个 null 结果会终止这一查找链。 像这样串联空值检查,比编写和维护深层嵌套的 if 要方便得多。

类似地,异常比手动检查并传播错误码方便得多。 同时,日志记录最容易通过专门的日志框架来实现,而不是让每个函数同时返回其日志结果和返回值。 链式空值检查和异常通常要求语言设计者预先考虑这种用例,而日志框架通常利用副作用,将记录日志的代码与日志的累积解耦。

  1. 4.1. 一个 API,多种应用
  2. 4.2. Monad 类型类
  3. 4.3. 示例:单子中的算术
  4. 4.4. 单子的 do-记法
  5. 4.5. IO 单子
  6. 4.6. 额外便利
  7. 4.7. 小结