Zunächst die Schnittstelle in der Datei RndBox?.i3. Es ist Konvention, das Modul nach dem Datentyp zu benennen und den zugehörigen Modula3-Typen T. Alles was den Typen bezeichnet lässt man aus den Bezeichnern weg, denn dafür gibt es die Qualifikation. Man schreibt in den Programmen dann RndBox?.T oder RndBox?.New. Der Typ T wird als Untertyp von Zeigern mit automatischer Speicherverwaltung definiert. Modula-3 hält sich einen GarbageCollector und braucht daher keine explizite Freigabe des Zufallsgenerators.
|
Jetzt kommt die Implementation in der Datei RndBox?.m3. Mit REVEAL deckt man auf, was sich denn nun wirklich hinter T verbirgt. Der Rest ist nicht weiter spektakulär.
|
Um das Projekt komplett zu machen, gibt es noch eine Projektdatei namens m3makefile.
|
Noch besser gefällt mir aber die folgende Implementation, welche leichter auf höhere Dimensionen übertragen werden kann.
|