展平密封的案例类层次结构

Nie*_*nAI 7 scala shapeless

假设我有一个密封的案例类层次结构,如下所示:

sealed trait Expr
case class Const(val: Double) extends Expr
case class Plus(x: Expr, y: Expr) extends Expr
case class Times(x: Expr, y: Expr) extends Expr
Run Code Online (Sandbox Code Playgroud)
  • 是否可以自动将表达式Plus(1,Plus(2,3))转换为HLists的HList?
  • 转换是否会在某个函数内部工作f(e: Expr),即在编译时不知道e的特定结构?

Nie*_*nAI 0

事实证明,这个问题已经在 SO 上得到了回答并且在 Shapeless-2.1.0-SNAPSHOT 的 Shapeless 发行版中有一个相应的示例。