scala> import shapeless._
import shapeless._
scala> case class Address(street : String, city : String, postcode : String)
defined class Address
scala> case class Person(name : String, age : Int, address : Address)
defined class Person
scala> val personGen = Generic[Person]
personGen: shapeless.Generic[Person]{type Repr = shapeless.::[String,shapeless.::[Int,shapeless.::[Address,shapeless.HNil]]]} = $1$$1@4ac8cdf4
scala> val personHList = "tom" :: 10 :: "downing st" :: "london" :: "sw1" :: HNil
personHList: shapeless.::[String,shapeless.::[Int,shapeless.::[String,shapeless.::[String,shapeless.::[String,shapeless.HNil]]]]] = tom :: 10 :: downing st :: london :: sw1 :: HNil
scala> val person = personGen.from(personHList)
<console>:16: error: type mismatch;
found : shapeless.::[String,shapeless.::[Int,shapeless.::[String,shapeless.::[String,shapeless.::[String,shapeless.HNil]]]]]
required: personGen.Repr
(which expands to) shapeless.::[String,shapeless.::[Int,shapeless.::[Address,shapeless.HNil]]]
val person = personGen.from(personHList)