fp-ts:A.sequenceT的逆运算是什么?

问题描述 投票:0回答:0

操作 A.sequenceT 允许将类型化 Monad 的序列转换为类型化元组的 Monad,例如在这个 Option 示例中:

    const sequenceO = A.sequenceT(O.Apply);

    const o1: Option<number> = O.some(1);
    const o2: Option<string> = O.some("1");

    const o12: Option<[number, string]> = sequenceO(o1, o2);

逆运算的最佳表示是什么?

作为 Option 的特例,我能做的最好的是:

    const unsequenceO = O.fold<[number, string], [Option<number>, Option<string>]>(() => [O.none, O.none], ([s1, s2]) => [O.some(s1), O.some(s2)]);

    const [u1, u2] = unsequenceO(o12);

但我想知道是否存在一个概念(以及更通用的实现)。

typescript functional-programming fp-ts
© www.soinside.com 2019 - 2024. All rights reserved.