Excuse the necromancy, just wanted to share that the original `&` array
concatenation works in current Nim, albeit not as a template.
func `&`[ia: static[int], ib: static[int], T](a: array[ia, T], b: array[ib,
T]): array[ia + ib, T] =
for i in 0 ..< ia:
result[i] = a[i]
for i in 0 ..< ib:
result[ia + i] = b[i]
const a = [1, 2] & [3, 4] & [5, 6]
assert a.type is array[6, int]
assert a == [1, 2, 3, 4, 5, 6]
assert [1.0, 2.0] & [3.0, 4.0] is array[4, float]
assert [1.0, 2.0] & [3.0, 4.0] == [1.0, 2.0, 3.0, 4.0]
Run