const sumAtMostTwo = (numbers: number[]): number =>
pipe(
Match.value(numbers),
Match.when([], () => 0),
Match.when([Match.number], ([x]) => x),
Match.when([Match.number, Match.number], ([x, y]) => x + y),
Match.orElse(() => {
throw new Error(`Expected at most 2 elements, got ${numbers.length}`);
}),
);
const sumAtMostTwo = (numbers: number[]): number =>
pipe(
Match.value(numbers),
Match.when([], () => 0),
Match.when([Match.number], ([x]) => x),
Match.when([Match.number, Match.number], ([x, y]) => x + y),
Match.orElse(() => {
throw new Error(`Expected at most 2 elements, got ${numbers.length}`);
}),
);