# updateAt

Update the value at a specific index in the current state of a RefTuple using a function.

## Signatures

```ts
export declare const updateAt: {
    <T extends ReadonlyArray<unknown>, I extends number>(index: I, f: (value: T[I]) => T[I]): <E, R>(ref: RefTuple<T, E, R>) => Effect.Effect<T, E, R>;
    <T extends ReadonlyArray<unknown>, I extends number, E, R>(ref: RefTuple<T, E, R>, index: I, f: (value: T[I]) => T[I]): Effect.Effect<T, E, R>;
};
```

## Why

Keeps update at atomic with respect to competing RefSubject writes instead of splitting the read
and replacement into separate effects.

## Ownership and lifetime

Running update at performs one serialized tuple transition and resolves with its committed
value. It acquires no resource; failures and services remain those of the source ref.
