def OptState.split
bendtorch@1.3.0.0 · main.bend:78
import bendtorch@1.3.0.0/main.bend as Bendtorch
import Base
78
79
80def OptState.split(-A: Type, -B: Type, st: OptState<Two<A, B>>) -> Two<OptState<A>, OptState<B>>:
81 match st:
82 case NoMom{}: Two{NoMom{}, NoMom{}}
83 case OneMom{Two{a, b}}: Two{OneMom{a}, OneMom{b}}
84 case TwoMom{Two{a, b}, Two{c, d}}: Two{TwoMom{a, c}, TwoMom{b, d}}
85 case Packed{PNode{a, b}}: Two{Packed{a}, Packed{b}}
86 case Packed{PNew{+f}}: Two{Packed{PNew{f}}, Packed{PNew{f}}}
87 case Packed{t}: Two{Packed{t}, Packed{PNew{False{}}}}