title: Dynamically create extensible record in shapeless 2.0
body: <p>I need to produce an extensible record given an <code>HList</code> of keys and a map of values, here's a MWE of what I'm trying to achieve (you can copy/paste this in any REPL with shapeless 2.0 available, in order to reproduce the issue)</p>
  
  <pre><code>import shapeless._; import syntax.singleton._; import record._
  
  case class Foo[T](column: Symbol)
  
  val cols = Foo[String]('column1) :: HNil
  
  val values = Map("column1" -&gt; "value1")
  
  object toRecord extends Poly1 {
    implicit def Foo[T] = at[Foo[T]] { foo =&gt;
      val k = foo.column.name
      val v = values.get(k)
      (k -&gt;&gt; v)
    }
  }
  
  val r = cols.map(toRecord)
  // r: shapeless.::[Option[String] with shapeless.record.KeyTag[k.type,Option[String]] forSome { val k: String },shapeless.HNil] = Some(value1) :: HNil
  
  val value = r("column1")
  // error: No field String("column1") in record shapeless.::[Option[String] with shapeless.record.KeyTag[k.type,Option[String]] forSome { val k: String },shapeless.HNil]
     val value = r("column1")
  </code></pre>
  
  <p>If I try defining the record manually everything works as expected</p>
  
  <pre><code> val q = ("column1" -&gt;&gt; Some("value1")) :: HNil
   // q: shapeless.::[Some[String] with shapeless.record.KeyTag[String("column1"),Some[String]],shapeless.HNil] = Some(value1) :: HNil
  
   q("column1")
   // Some[String] = Some(value1)
  </code></pre>
  
  <p>Clearly the difference is that in one case the <code>KeyTag</code> has type</p>
  
  <pre><code>KeyTag[String("column1"), Some[String]]
  </code></pre>
  
  <p>and in the (non-working) other</p>
  
  <pre><code>KeyTag[k.type,Option[String]] forSome { val k: String }
  </code></pre>
  
  <p>I sense the issue is with the string <code>k</code> not being statically known, but I have no clue on how to fix this.
  Generally speaking, is there a way of dynamically generating an extensible record from a list of keys?</p>
  
  <p>I fear the answer is to use a macro, but I'd be glad if another solution existed.</p>