import type { List } from "."; import type { Args, GenericFn, GenericResolver } from "../HKT"; import type { Broaden } from "../helpers"; /** * Append an element to a {@link List} (i.e., fixed-length tuple). * * Sig: `(x: T, xs: List) => List` */ export type Append = TS extends unknown[] ? [...TS, T] : readonly [...TS, T]; interface Resolver extends GenericResolver<[unknown, List], List> { on1_: ([x]: Args) => [[List>], List>]; on_1: ([, xs]: Args) => [ [Broaden<(typeof xs)[number]>], List>, ]; on11: ([x, xs]: Args) => [[], List]; } /** * [Fn] Append an element to a {@link List} (i.e., fixed-length tuple). * * Sig: `(x: T, xs: List) => List` */ export default interface AppendFn extends GenericFn { def: ([x, xs]: Args) => Append; }