Merkmal

Merkmale bilden eine Hierarchie. Sie werden bei der Definition von Methoden (siehe Methode) und Klassen (siehe Klasse) verwendet.

Wenn Merkmale als Spezialisierer bei defmethod verwendet werden, dann wird sichergestellt, dass die erzeugten Methoden nicht in Konflikt geraten.

Ein Konflikt liegt dann vor, wenn es möglich ist, eine generische Funktion mit Argumenten so aufzurufen, dass in der Liste der anwendbaren Methoden zwei Methoden vorliegen, die an der gleichen Parameterposition zwei verschiedene, voneinander unabhängige Merkmale als Spezialisierer besitzen. Dabei sind Merkmale voneinander unabhängig, wenn sie nicht direkte oder indirekte Sub- oder Supermerkmale voneinander sind.

Für Merkmale stehen die folgenden Funktionen zur Verfügung:

trait?,
deftrait und
direct-superclasses.