// // // "simulate" objects with inheritance ... // // def root() : (String, Int) => Int = { def printit(c: Int) = { print(c) ; println ; c } { (op, c) => { if (op equals "print") printit(c) else error("unknown op for root: " + op) } } } def makeCounter(): String => Int = { var c = 0; val mySuper = root(); def incr = { c += 1 ; c } def decr = { c -= 1 ; c } def show = { c } {op => { if (op equals "up") incr else if (op equals "down") decr else if (op equals "show") show else mySuper(op,c) } } }