import type { List } from "."; // @ts-ignore - `Concat` is only used in doc comments import type { Concat } from "./Concat"; import type { Args, GenericFn, GenericResolver } from "../HKT"; /** * Less strict version of {@link Concat}.The **W** suffix (short for **W**idening) means that both * {@link List}s can hold different types. * * Sig: `(xs: List, ys: List) => List` */ export type ConcatW = TS extends unknown[] ? [...TS, ...US] : readonly [...TS, ...US]; interface Resolver extends GenericResolver<[List, List], List> { on1_: ([xs]: Args) => [[List], List]; on_1: ([, ys]: Args) => [[List], List]; on11: ([xs, ys]: Args) => [[], List<(typeof xs)[number] | (typeof ys)[number]>]; } /** * [Fn] Less strict version of {@link Concat}. The **W** suffix (short for **W**idening) means that * both {@link List}s can hold different types. * * Sig: `(xs: List, ys: List) => List` */ export default interface ConcatWFn extends GenericFn { def: ([xs, ys]: Args) => ConcatW; }