Roles


The roles vocabulary provides a form of tuple interface that can be implemented by concrete tuple classes. A role definition is a mixin class that also prescribes a set of tuple slots. Roles are not tuple classes by themselves and cannot be instantiated by new. The vocabulary extends ROLE-TUPLE: syntax to allow concrete tuple types to declare membership to one or more roles, automatically including their prescribed slots.

The role superclass:
role


Syntax for making a new role:
ROLE:

Syntax for making tuples that use roles:
ROLE-TUPLE:

Errors with roles:
multiple-inheritance-attempted ( classes -- * )

role-slot-overlap ( class slots -- * )