witness: Witness.Aux[K], hEnc: ValueEncoder[H], tEnc: ObjEncoder[T] ): ObjEncoder[FieldType[K, H] :: T] = { new ObjEncoder[FieldType[K, H] :: T] { def encode(h: FieldType[K, H] :: T) = { (witness.value.name, hEnc.encode(h.head)) +: tEnc.encode(h.tail) } } } "num" ObjEncoder[FieldType["num",Int] :: HNil]