1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
type adder = obj { fn add(); }; obj leaf_adder(x: int) { fn add() { log "leaf"; log x; } } obj delegate_adder(a: adder) { fn add() { a.add(); } } fn main() { let x = delegate_adder(delegate_adder(delegate_adder(leaf_adder(10)))); x.add(); }