import type { List } from "."; import type { GenericFn } from ".."; import type { Args, GenericResolver } from "../HKT"; import type { None, Option, Some } from "../Option"; /** * Get the last element in a {@link List}. * * Sig: `(xs: List) => Option` */ export type Last = TS extends readonly [...unknown[], infer Last] ? Some : None; interface Resolver extends GenericResolver<[List], Option> { on1: ([xs]: Args) => [[], Option<(typeof xs)[number]>]; } /** * [Fn] Get the last element in a {@link List}. * * Sig: `(xs: List) => Option` */ export default interface LastFn extends GenericFn { def: ([xs]: Args) => Last; }