# filter

Filter the values of a RefIterable (mutating).

## Signatures

```ts
export declare const filter: {
    <A>(predicate: (a: A) => boolean): <E, R>(ref: RefIterable<A, E, R>) => Effect.Effect<Iterable<A>, E, R>;
    <A, E, R>(ref: RefIterable<A, E, R>, predicate: (a: A) => boolean): Effect.Effect<Iterable<A>, E, R>;
};
```

## Why

Applies filter to the committed Iterable through `RefSubject.update` and publishes one coherent
replacement; this is a mutation, not a read-only Computed projection.

## Ownership and lifetime

The Effect starts when run, participates in the source ref's serialized update boundary, and
acquires no resource. It returns the committed Iterable and retains the ref's E and R channels.
