Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

Collections-12


TestLists Lists Collections

Collections
Diese Variante wurde unverändert von einem früheren Beispiel übernommen.

Lists
Gegenüber der ersten Variante von Lists, die Resources unterstützt wird hier die Unterscheidung zwischen leicht- und schwergewichtigen Listen angeboten. Wenn ein Objekt in einer leichtgewichtigen Liste enthalten ist, sorgt das Verschwinden aller schwergewichtigen Verweise darauf, daß das Objekt automatisch aus der Liste entfernt wird. Wenn dies konsequent durchgeführt wird, ist davon auszugehen, daß das entsprechende Objekt von der garbage collection erfaßt werden kann.

TestLists
Gegenüber der früheren Fassung ist die Möglichkeit hinzugekommen, neue Listen als heavy (entspricht der früheren Situation) oder als light zu kennzeichnen. So sieht die neue Syntax aus:
Expression = Integer |
             List |
             "$" Integer |
             Operator Expression .
List =       [ RefType ] "(" [ Expression { "," Expression } ] ")" .
RefType =    "heavy" | "light" .

Operator =   "kill" .             (* Resources.Notify *)
Um die neue Form der Listen rasch testen zu können, wurde hier die Zahl der Variablen auf 4 begrenzt, d.h. bei der fünften Eingabe wird der schwere Verweis auf den früheren Inhalt von $0 aufgegeben. Hier ist eine Beispielsitzung:
helios$ tlists
> light (1, 2, 3)
$0 = (1, 2, 3)
> light ($0, 4, 5)
$1 = ((1, 2, 3), 4, 5)
> light ($1, 6, 7)
$2 = (((1, 2, 3), 4, 5), 6, 7)
> light ($2, $1, $0)
$3 = ((((1, 2, 3), 4, 5), 6, 7), ((1, 2, 3), 4, 5), (1, 2, 3))
> (11, 22, 33)
$0 = (11, 22, 33)
> $3
$1 = (((4, 5), 6, 7), (4, 5))
> $3
$2 = ((6, 7))
> helios$ 

Die Quellen stehen als Shell-Archiv zur Verfügung.
WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

Andreas Borchert, 25. November 1997