def read_result
bendtorch-core@0.1.0.0 · src/tensor/core.bend:108
import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/storage/main.bend as Storage
import bendtorch-core@0.1.0.0/src/tensor/lifecycle.bend as Lifecycle
108def read_result(-shape: Shape.Shape, -original: Storage.Storage,
109 -valid: {Lifecycle.logical_length(original) == Shape.logical_numel(Shape.dimensions(shape)) : Nat}, +i: U32,
110 pair: Storage.Storage & Result<&2, &2, Storage.Error, F32>,
111 -same: {pair == Storage.get(original, i) : Storage.Storage & Result<&2, &2, Storage.Error, F32>}) ->
112 Tensor<shape> & Result<&2, &2, Error, F32>:
113 (storage, result) = pair
114 tensor : Tensor<shape> = TTensor{storage, Equal.trans(Nat, Lifecycle.logical_length(storage), Lifecycle.logical_length(original),
115 Shape.logical_numel(Shape.dimensions(shape)),
116 %Equal.sym(Storage.Storage & Result<&2, &2, Storage.Error, F32>, (storage, result), Storage.get(original, i), same) :
117 {Lifecycle.retained_read(_) == Lifecycle.logical_length(original) : Nat}
118 Lifecycle.get_length(original, i), valid)}
119 (tensor, storage_read_error(result))