import type { List } from "."; import type { Args, GenericFn, GenericResolver } from "../HKT"; import type { Broaden } from "../helpers"; /** * Prepend an element to a {@link List} (i.e., fixed-length tuple). * * Sig: `(x: T, xs: List) => List` */ export type Prepend = TS extends unknown[] ? [T, ...TS] : readonly [T, ...TS]; 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] Prepend an element to a {@link List} (i.e., fixed-length tuple). * * Sig: `(x: T, xs: List) => List` */ export default interface PrependFn extends GenericFn { def: ([x, xs]: Args) => Prepend; }