# RefTrie.modify

Modify the value at a key if it exists.

## Signatures

```ts
export declare const modify: {
    <V>(key: string, f: (v: V) => V): <E, R>(ref: RefTrie<V, E, R>) => Effect.Effect<Trie.Trie<V>, E, R>;
    <V, E, R>(ref: RefTrie<V, E, R>, key: string, f: (v: V) => V): Effect.Effect<Trie.Trie<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 trie transition and resolves with its committed value. It
acquires no resource; failures and services remain those of the source ref.
