扁平化密封案例 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
- 是否可以将
Plus(1,Plus(2,3))
等表达式自动转换为 HList 的 HList?
- 即使在某些函数内部转换也会工作
f(e: Expr)
,即当编译时不知道 e 的具体结构时?
事实证明,这个问题已经在 Shapeless-2.1.0-SNAPSHOT 的 Shapeless 分布中的 SO here and that there's a corresponding example 上得到了回答。
假设我有一个密封的案例 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
- 是否可以将
Plus(1,Plus(2,3))
等表达式自动转换为 HList 的 HList? - 即使在某些函数内部转换也会工作
f(e: Expr)
,即当编译时不知道 e 的具体结构时?
事实证明,这个问题已经在 Shapeless-2.1.0-SNAPSHOT 的 Shapeless 分布中的 SO here and that there's a corresponding example 上得到了回答。