title: HList as parameter of method with simplified type signature
body: <p>Suppose I have container-marker</p>
  
  <pre><code>case class TypedString[T](value: String)
  </code></pre>
  
  <p>where <code>value</code> represents some id for particular type <code>T</code>.</p>
  
  <p>I have two classes</p>
  
  <pre><code>case class User(id: String)
  case class Event(id: String)
  </code></pre>
  
  <p>And I have a function which does some stuff:</p>
  
  <pre><code>def func[L &lt;: HList](l: L)(...) {...}
  </code></pre>
  
  <p>So I can use it like </p>
  
  <pre><code>func[TypedString[User] :: TypedString[Event] :: HNil](
      TypedString[User]("user id") :: TypedString[Event]("event id") :: HNil
  )
  </code></pre>
  
  <p>(it's important for me to keep type signature explicitly)</p>
  
  <p>The question is: how to change or extends func to have shorter type signature (keeping only marker types) like:</p>
  
  <pre><code>func[User :: Event :: HNil](
      TypedString[User]("user id") :: TypedString[Event]("event id") :: HNil
  )
  </code></pre>