In defense of C++ concepts, which did not make it into C++0x.
subset Child of Person where *.age < 16;
subset Adult of Person where -> $person { 16 < $person.age < 66 };
subset Senior of Person where *.age >= 66;
multi print-name(Child $person) { "Little {$person.name}" }
multi print-name(Adult $person) { $person.name }
multi print-name(Senior $person) { "Old Man {$person.name}" }
Kick. Ass.