def bag_put.go
unified-nsga-iii@0.2.2.0 · survival.bend:744
import unified-nsga-iii@0.2.2.0/survival.bend as Survival
import Base
744def bag_put.go(
745 bags: List<&2, Bag>,
746 +row: NRow,
747 +seeded: Nat,
748 +pos: Nat,
749 +rev: List<&2, Bag>,
750 same: Bool
751) -> List<&2, Bag>:
752 match bags same:
753 case Nil{} p:
754 List.append(&2, Bag, List.reverse(&2, Bag, rev), [Bag{nrow_r(row), seeded, [MRow{pos, row}]}])
755 case Bag{+ref, +count, +members} <> rest True{}:
756 List.append(
757 &2,
758 Bag,
759 List.reverse(&2, Bag, rev),
760 Bag{ref, count, List.append(&2, MRow, members, [MRow{pos, row}])} <> rest
761 )
762 case Bag{+ref, +count, +members} <> +rest False{}:
763 bag_put.go(rest, row, seeded, pos, Bag{ref, count, members} <> rev, head_is_ref(rest, nrow_r(row)))