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) }