Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to show the type of a HList in scala shapeless

How do I get the type of a HList as a String so I can print it. eg "Int :: Long :: String :: HNil"

val gen = Generic[?]
val typeString: String = ???
println("The type is " + typeString)

I know the String of it isnt very useful and usually you want the type from gen.Repr

like image 892
Stephen Avatar asked May 03 '17 12:05

Stephen


Video Answer


1 Answers

Use shapeless.Typeable:

scala> import shapeless._
import shapeless._

scala> case class A(i: Int, s: String)
defined class A

scala> val gen = Generic[A]
gen: shapeless.Generic[A]{type Repr =
  shapeless.::[Int,shapeless.::[String,shapeless.HNil]]} =
    anon$macro$14$1@56639061

scala> println(Typeable[gen.Repr].describe)
Int :: String :: HNil
like image 83
OlivierBlanvillain Avatar answered Oct 05 '22 14:10

OlivierBlanvillain