mwerschy
04/20/2017, 2:08 PMsealed class Expression
data class Const(val value: Int) : Expression()
data class Add(val left: Expression, val right: Expression) : Expression()
data class Neg(val expr: Expression) : Expression()
fun eval(expr: Expression): Int = when (expr) {
is Const -> expr.value
is Add -> eval(expr.left) + eval(expr.right)
is Neg -> -eval(expr.expr)
}
fun main(args: Array<String>) {
println(eval(Add(Const(1), Neg(Const(2)))))
}
dg3feiko
04/20/2017, 2:17 PM