import { assertEquals } from "jsr:@std/assert"
type Vec1 = [number]
type Vec2 = [number, number]
type Vec3 = [string, string, string]
const vec3 = [
[1] as Vec1,
[2, 2] as Vec2,
["halla", "mein", "fuhrer"] as Vec3,
] as const
const vecc = sequenceArgsMap<typeof vec3, [boolean, number, string]>([
(v0) => v0 + 4 > 0 ? true : false,
(v0, v1) => v0 + v1**2,
(s0, ...args) => ([
(s0 === "halla" ? "hello" : "un-greetful"),
...args
].join(" ")),
], vec3)
vecc satisfies (readonly [boolean, number, string])
assertEquals(vecc, [true, 6, "hello mein fuhrer"])
similar to sequenceMap, but made for variable number of function argument parameters.