Sealed Class Approach to Intersection Types

sealed class Expr {
    class Const(val number: Double) : Expr()
    class Sum(val e1: Expr, val e2: Expr) : Expr()
    object NotANumber : Expr()
}
Meta
f12db897-3696-4689-bcb9-e8b63d69c3a1