/* function generate (count, callback, separator) { if (separator == undefined) { separator = ", "; } const parts = []; for (let i=0; i `infer T${i}`)}] ?`, count == 0 ? `[] :` : `[${generate(count, i => `T${i}`)}] :` ].join("\n "); } function generateCases (count) { return generate(count, i => generateCase(i), "\n ") } generateCases(3) */ export type PopFront = ( ((...arr: A) => void) extends ((first: any, ...arr: infer B) => void)? B : never ); export function popFront ( tuple : TupleT ) : ( [TupleT[0], PopFront] ) { return [ tuple[0], tuple.slice(1) as any ]; }