dispatch(obj, m): slot = vtable[obj.klass][m]; jump slot
map f (x:xs) = f x : map f xs
ancestor(X,Y) :- parent(X,Y).
ancestor(X,Y) :- parent(X,Z), ancestor(Z,Y).
z := map2 (+) x y; z updates whenever x or y updates