/* -*- encoding: utf-8 -*- */ /* from the article */ forward new_ref(): ref forward succ(int): int module person var name_map: map from person ref to string var age_map: map from person ref to int procedure person_new(name: string, age: int): person ref var p: person ref begin p := bestow person new_ref() name_map[p] := name age_map[p] := age return p end procedure person_get_name(p: person ref): string begin return name_map[p] end procedure person_attend_birthday_party(p: person ref): void begin age_map[p] := succ(age_map[p]) end end.