dmitry.petrov
01/20/2017, 8:37 AMinterface CommutativeExpr
sealed class Expr
sealed class BinExpr(val e1: Expr, val e2: Expr) : Expr()
class Plus(e1: Expr, e2: Expr): BinExpr(e1, e2), CommutativeExpr
class Minus(e1: Expr, e2: Expr): BinExpr(e1, e2)
class Mul(e1: Expr, e2: Expr): BinExpr(e1, e2), CommutativeExpr
class Div(e1: Expr, e2: Expr): BinExpr(e1, e2)