nominal cell_array = array_base (heap {value : i32 * string}) inl create (n : i32) : cell_array = cell_array !!!!ArrayCreate(`(heap {value : i32 * string}), n) inl get (array : cell_array) (i : i32) : heap {value : i32 * string} = match array with | cell_array values => !!!!ArrayIndex(values, i) inl set (array : cell_array) (i : i32) (value : heap {value : i32 * string}) : () = match array with | cell_array values => !!!!ArrayIndexSet(values, i, value) inl main () : i32 = inl ~n = 7i32 inl ~word = "hi" inl pair = n, word inl cell = !!!!LayoutToHeap({value = pair}) inl a = create 1i32 set a 0i32 cell inl held = get a 0i32 inl opened = !!!!LayoutIndex(held) inl ~(left, right) = opened.value if left =. 7i32 && !!!!EQ(right, "hi") then 0i32 else 1i32