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
1074c23f-d506-4ef3-b05b-d0ec8b994b29