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))

Uses (11)

Used by (3)