ZippedSequence.first
extension <A, B> (A, B) { func map(_ f: <T, U>(T) -> U) -> (T, U) }
func firsts<T>(of arrays: [T]) -> ((T?)...) { arrays.map { $0.first } }