Monad Function
本模块用轻量 Option(Some / None)演示「可失败计算」的组合:map / flatMap 避免层层判空,失败时短路。
项目中的实现
- 源码:
src/monadFunction.ts - 导出:
Option(类型)、some、none、mapOption、flatMapOption、getOptionOrElse
各函数示例
some
import { some } from 'wssf-kage-js';
some(42); // => { kind: 'some', value: 42 }
none
import { none } from 'wssf-kage-js';
none(); // => { kind: 'none' }
mapOption
import { some, mapOption } from 'wssf-kage-js';
mapOption(some(2), (n) => n * 2); // => some(4)
flatMapOption
import { some, none, flatMapOption } from 'wssf-kage-js';
flatMapOption(some('42'), (s) => (/^\d+$/.test(s) ? some(Number(s)) : none())));
getOptionOrElse
import { none, getOptionOrElse } from 'wssf-kage-js';
getOptionOrElse(none(), 0); // => 0
什么时候优先用
- 多层可能为空的链路,希望比深层
if更线性的表达 - 教学或小型工具库场景;大型项目可评估
fp-ts等完整方案