1.11 Signaturen
Signaturen können statt der Verträge aus dem Buch geschrieben werden: Während Verträge reine Kommentare sind, überprüft DrRacket Signaturen und meldet etwaige Verletzungen.
1.11.1 signature
(signature sig) |
Diese Form liefert die Signatur mit der Notation sig.
1.11.2 Signaturdeklaration
(: id sig) |
Diese Form erklärt sig zur gültigen Signatur für id.
1.11.3 Eingebaute Signaturen
Signatur für beliebige Zahlen.
Signatur für reelle Zahlen.
Signatur für rationale Zahlen.
Signatur für ganze Zahlen.
Signatur für ganze, nichtnegative Zahlen.
Signatur für boolesche Werte.
Signatur für \scheme[#t].
Signatur für \scheme[#f].
Signatur für Zeichenketten.
Signatur für die leere Liste.
Signatur, die auf alle Werte gültig ist.
signature |
Signatur für Signaturen.
Signatur für Eigenschaften.
1.11.4 predicate
(predicate expr) |
Bei dieser Signatur muß expr als Wert ein Prädikat haben, also
eine Prozedur, die einen beliebigen Wert akzeptiert und entweder #t
oder #f zurückgibt.
Die Signatur ist dann für einen Wert gültig, wenn das Prädikat, darauf angewendet,
#t ergibt.
1.11.5 one-of
(one-of expr ...) |
Diese Signatur ist für einen Wert gültig, wenn er gleich dem Wert eines
der expr ist.
1.11.6 mixed
(mixed sig ...) |
Diese Signatur ist für einen Wert gültig, wenn er für eine der Signaturen
sig gültig ist.
1.11.7 Prozedur-Signatur
(sig ... -> sig) |
Diese Signatur ist dann für einen Wert gültig, wenn dieser eine
Prozedur ist. Er erklärt außerdem, daß die Signaturen vor dem ->
für die Argumente der Prozedur gelten und die Signatur nach dem ->
für den Rückgabewert.
}
1.11.8 Signatur-Variablen
%a |
%b |
%c |
... |
Dies ist eine Signaturvariable: sie steht für eine Signatur, die für jeden Wert gültig ist.
1.11.9 combined
(combined sig ...) |
Diese Signatur ist für einen Wert gültig, wenn sie für alle der Signaturen
sig gültig ist.