# sample

Emits the latest source value whenever `sampler` emits. Source values that
arrive between sampler ticks are not forwarded until the next tick.

**Completion:** Completes when the source completes.
**Errors:** The first failure from either stream fails the result.

## Signatures

```ts
export declare const sample: {
    <S, E2, R2>(sampler: Fx<S, E2, R2>): <A, E, R>(self: Fx<A, E, R>) => Fx<A, E | E2, R | R2>;
    <A, E, R, S, E2, R2>(self: Fx<A, E, R>, sampler: Fx<S, E2, R2>): Fx<A, E | E2, R | R2>;
};
```

## Why

`sample` separates value production from observation cadence. A sampler tick emits the latest
source value once, or nothing before the source's first value; repeated ticks may repeat a value.

## Ownership and lifetime

One latest-value cell and a child sampler fiber belong to each run. Source completion interrupts
the sampler; any failure or consumer interruption stops both and releases the retained value.

## Examples

```ts
import { Fx } from "@typed/fx"
const snapshots = Fx.sample(Fx.fromIterable([10, 20]), Fx.fromIterable(["tick"]))
```
