title: Python type hints for generic *args (specifically zip or zipWith)
body: <p>I am writing a function called <code>zip_with</code> with the following signature:</p>
  
  <pre><code>_A = TypeVar("_A")
  _B = TypeVar("_B")
  _C = TypeVar("_C")
  
  
  def zip_with(zipper: Callable[[_A, _B], _C], a_vals: Iterable[_A], b_vals: Iterable[_B]) -&gt; Generator[_C, None, None]: ...
  </code></pre>
  
  <p>It's like <code>zip</code>, but allows you to aggregate with any arbitrary function. This works fine for an implementation of <code>zip_with</code> that only allows 2 arguments. </p>
  
  <p>Is there support for adding type hints for a variable number of arguments? Specifically, I want an arbitrary list of generic types, and I want the type checker to be able to match the types of the arguments to the arguments of the <code>zipper</code>. Here's how I can do it without specific types:</p>
  
  <pre><code>def zip_with(zipper: Callable[..., _C], *vals: Iterable) -&gt; Generator[_C, None, None]: ...
  </code></pre>
  
  <p>In other words, I want the type checker to be able to match the types of <code>*vals</code> to the input arguments of <code>zipper</code>.</p>