func f3(_ tpl: ([Int], [String]), _ g: ((Int) -> Foo, (String) -> Bar) { ... }map と関数のシグネチャはまったく関係ない。map はそれを使う式に閉じた話。f3 は 2 要素タプルを受け取ってて、それと map には何の関係もない。func f3<T..., U...>(_ tpl: ([T]...), _ g: ((T) -> U)...) { let fst: (U...) = tpl.map(g) }