# RefRecord.modify

Modify the value at a key if it exists.

## Signatures

```ts
export declare const modify: {
    <K extends string, V>(key: K, f: (v: V) => V): <E, R>(ref: RefRecord<K, V, E, R>) => Effect.Effect<Record.ReadonlyRecord<K, V>, E, R>;
    <K extends string, V, E, R>(ref: RefRecord<K, V, E, R>, key: K, f: (v: V) => V): Effect.Effect<Record.ReadonlyRecord<K, V>, E, R>;
};
```

## Why

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

## Ownership and lifetime

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