You could make some generic functions to do it:
func firstRest<A, B, C>(_ tup: (A, B, C)) -> (A, (B, C)) {
(tup.0, (tup.1, tup.2))
}
func firstRest<A, B, C, D>(_ tup: (A, B, C, D)) -> (A, (B, C, D)) {
(tup.0, (tup.1, tup.2, tup.3))
}
func firstRest<A, B, C, D, E>(_ tup: (A, B, C, D, E)) -> (A, (B, C, D, E)) {
(tup.0, (tup.1, tup.2, tup.3, tup.4))
}
func firstRest<A, B, C, D, E, F>(_ tup: (A, B, C, D, E, F)) -> (A, (B, C, D, E, F)) {
(tup.0, (tup.1, tup.2, tup.3, tup.4, tup.5))
}
Now you can:
let tuple = ("Boston", "Red Sox", 97, 65, 59.9)
let (first, rest) = firstRest(tuple)
print(first)
print(rest)