``` sealed class Expr { class Const(val number: ...
# language-proposals
c
Copy code
sealed class Expr {
  class Const(val number: Double) : Expr()
  class Sum(val e1: Expr, val e2: Expr) : Expr()
  object NotANumber : Expr()
}

fun eval(expr: Expr): Double = when(expr) {
  is Expr.Const -> expr.number
  is Expr.Sum -> eval(expr.e1) + eval(expr.e2)
  else -> Double.NaN
}