def carry
stelliferous@0.0.2.0 · tensor_cursor.bend:38
import stelliferous@0.0.2.0/tensor_cursor.bend as TensorCursor
import Base
38def carry(axes: List<&2,Axis>,address: U32,reset: List<&2,Axis>) -> List<&2,Axis> & U32:
39 match axes:
40 case []: (restore(reset,[]),address)
41 case Axis{extent,0n,stride,rewind} <> tail: (restore(reset,Axis{extent,0n,stride,rewind} <> tail),address)
42 case Axis{+extent,1n,stride,+rewind} <> tail: carry(tail,(address - rewind : U32),Axis{extent,extent,stride,rewind} <> reset)
43 case Axis{extent,1n+1n+remaining,+stride,rewind} <> tail:
44 (restore(reset,Axis{extent,1n+remaining,stride,rewind} <> tail),(address + stride : U32))