title: How to generically extract field names with Shapeless?
body: <p>Given a case class <code>A</code> I can extract its field names with Shapeless using the following snippet:</p>
  
  <pre><code>val fieldNames: List[String] = {
    import shapeless._
    import shapeless.ops.record.Keys
  
    val gen = LabelledGeneric[A]
    val keys = Keys[gen.Repr].apply
    keys.toList.map(_.name)
  }
  </code></pre>
  
  <p>This works all nice, but how can I implement this in a more generic manner, so that I can conveniently use this technique for arbitrary classes, like </p>
  
  <pre><code>val fields: List[String] = fieldNames[AnyCaseClass]
  </code></pre>
  
  <p>Is there a library that already does this for me?</p>