扁平化密封案例 class 层次结构

Flattening a sealed case class hierarchy

假设我有一个密封的案例 class 层次结构如下:

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

事实证明,这个问题已经在 Shapeless-2.1.0-SNAPSHOT 的 Shapeless 分布中的 SO here and that there's a corresponding example 上得到了回答。