def write_read

bendtorch-core@0.1.0.0 · src/storage/frame.bend:7

import bendtorch-core@0.1.0.0/src/storage/frame.bend as Frame
import Base
import bendtorch-core@0.1.0.0/src/storage/model.bend as Model
import bendtorch-core@0.1.0.0/src/storage/array.bend as ArrayCore

7def write_read(-T: Data, +d: Nat, array: Array<T>, +path: Model.Path(d), value: T, valid: Model.Balanced(T, d, array)) ->
8  {Model.observe(T, d, ArrayCore.write_path(T, d, array, path, value), path) == Some{value} : Maybe<&2, T>}:
9  match d array:
10    case 0n ALeaf{old}:
11      {==}
12    case 0n ANode{xs, ys}:
13      match valid:
14    case 1n+p ALeaf{old}:
15      match valid:
16    case 1n++p ANode{xs, ys}:
17      Model.Step{bit, rest} = path
18      match bit:
19        case False{}:
20          (ex, ey) = valid
21          write_read(T, p, xs, rest, value, ex)
22        case True{}:
23          (ex, ey) = valid
24          write_read(T, p, ys, rest, value, ey)

Uses (10)

Used by (1)