def merge
bendtorch-core@0.1.0.0 · src/autograd/tensor_backward.bend:879
import bendtorch-core@0.1.0.0/src/autograd/tensor_backward.bend as TensorBackward
import Base
import bendtorch-core@0.1.0.0/src/autograd/gradient.bend as Gradient
879def merge(entries: List<&1, Entry>, gradients: List<&1, Gradient.Slot>) -> List<&1, Entry> & Result<&2, &2, Error, Unit>:
880 match entries gradients:
881 case Nil{} gradients:
882 (Nil{}, Done{Unit{}})
883 case Con{entry, rest} Nil{}:
884 (entry <> rest, Done{Unit{}})
885 case Con{Entry{node, +shape, value, saved, slot}, rest} Con{Gradient.Unset{}, more}:
886 merged_entry(node, shape, value, saved, Gradient.Accumulated{slot}, merge(rest, more))
887 case Con{Entry{node, +shape, value, saved, slot}, rest} Con{Gradient.Held{g}, more}:
888 merged_entry(node, shape, value, saved, Gradient.accumulate(shape, slot, g), merge(rest, more))