PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kennt sich jemand mit ACT ONE aus?


Senior Sanchez
2008-07-26, 19:11:09
Holla,

Ich lerne gerade für eine Prüfung und beschäftige mich gerade mit der Definition abstrakter Datentyp in ACT ONE.

Dabei ist mir folgende Frage gekommen.
Angenommen, ich spezifiziere eine Warteschlange für natürliche Zahlen, dann wird das in ACT ONE so geschrieben:

type Nat_queue is NaturalNumber, Boolean
sorts Queue
opns.... usw.

Meine Frage ist jetzt folgende: Ich habe es zuerst so verstanden, dass dieses is eine Art Vererbung begründet oder eine nähere Definition. Aber das ist hier ja nicht der Fall, denn eine Warteschlange wird nicht von natürlichen Zahlen oder boolean erben. Viel mehr ist es für mich eine Warteschlange, sodass für mich is Queue Sinn ergeben würde. Andererseits hätte man doch auch bei den verwendeten Sorten hinter Queue noch NaturalNumber, Boolean schreiben können. Aber das ist in diesem Beispiel nicht gemacht worden.

Kann mir jemand den genauen Unterschied zwischen diesem is und dem sorts erklären?

Danke

Gast
2008-07-27, 11:59:30
Also ich kenne ACT One nicht und hab mir grade nur mal ein Paper angesehen, aber ich vermute folgendes:
"Sorts" steht für eine Art lokale Typdefinition. Also ob da jetzt "queue" steht oder einfach "x" ist im Grunde egal.
Das "is" steht für eine Art Vererbung, aber gleichzeitig auch für einen Import. D.h. in deinem Falle werden halt die natürlichen Zahlen importiert. Wozu man jedoch das Boolean braucht, kann ich dir nicht sagen...

Senior Sanchez
2008-07-27, 17:27:54
Also ich kenne ACT One nicht und hab mir grade nur mal ein Paper angesehen, aber ich vermute folgendes:
"Sorts" steht für eine Art lokale Typdefinition. Also ob da jetzt "queue" steht oder einfach "x" ist im Grunde egal.
Das "is" steht für eine Art Vererbung, aber gleichzeitig auch für einen Import. D.h. in deinem Falle werden halt die natürlichen Zahlen importiert. Wozu man jedoch das Boolean braucht, kann ich dir nicht sagen...

Hmm, das wäre natürlich ne Erklärung.

Das Boolean wurde deshalb gebraucht weil manche Operationen (opns), welche ja im Grunde den Funktionssymbolen der Signaturen entsprechen, eine Eingabe-/Ausgabesorte eines Funktionssymbols war.

Ich glaube is_empty war das und das liefert halt ein Boolean zurück laut Spezifikation.