def OptState.split

bendtorch@1.3.0.0 · main.bend:78

import bendtorch@1.3.0.0/main.bend as Bendtorch
import Base

78# A packed tree splits at its node; a part not yet stepped splits into two such parts. A leaf belongs to one matrix and
79# is never split (it goes to the left, the right side starts empty).
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{}}}}

Uses (4)

Used by (8)