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
24a2ca64-9df2-47f2-841e-31200fc4249e