1 import Base 2 import ../storage/main.bend as Storage 3 import ./core.bend as Core 4 import ../shape/core.bend as Shape 5 import ./lifecycle.bend as Lifecycle 6 7 def storage_length(result: Result<&2, &1, Storage.Error, Storage.Storage>) -> Maybe<&2, Nat>: 8 match result: 9 case Fail{error}: 10 None{} 11 case Done{storage}: 12 Some{Lifecycle.logical_length(storage)} 13 14 def tensor_length(-shape: Shape.Shape, result: Result<&2, &1, Core.Error, Core.Tensor>) -> Maybe<&2, Nat>: 15 match result: 16 case Fail{error}: 17 None{} 18 case Done{tensor}: 19 Some{Core.logical_length(shape, tensor)} 20 21 type TensorDone<-shape: Shape.Shape, -result: Result<&2, &1, Core.Error, Core.Tensor>> is Data: 22 TensorDone{-tensor: Core.Tensor, -same: {Done{tensor} == result : Result<&2, &1, Core.Error, Core.Tensor>}}