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
e340f933-e0d8-406d-b004-9b831bba238e