1.13 Verträge
1.13.1 contract
(contract contr) |
Diese Form liefert den Vertrag mit der Notation contr.
1.13.2 Vertragserklärung
(: id contr) |
Diese Form erklärt contr zum gültigen Vertrag für id.
Vertrag für beliebige Zahlen.
Vertrag für reelle Zahlen.
Vertrag für rationale Zahlen.
Vertrag für ganze Zahlen.
Vertrag für ganze, nichtnegative Zahlen.
Vertrag für boolesche Werte.
Vertrag für \scheme[#t].
Vertrag für \scheme[#f].
Vertrag für Zeichenketten.
Vertrag für die leere Liste.
contract |
Vertrag für Verträge.
Vertrag für Eigenschaften.
1.13.3 predicate
(predicate expr) |
Bei diesem Vertrag muß expr als Wert ein Prädikat haben, also
eine Prozedur, die einen beliebigen Wert akzeptiert und entweder #t
oder #f zurückgibt.
Der Vertrag ist dann für einen Wert gültig, wenn das Prädikat, darauf angewendet,
#t ergibt.
1.13.4 one-of
(one-of expr ...) |
Dieser Vertrag ist für einen Wert gültig, wenn er gleich dem Wert eines
der expr ist.
1.13.5 mixed
(mixed contr ...) |
Dieser Vertrag ist für einen Wert gültig, wenn er für einen der Verträge
contr gültig ist.
1.13.6 Prozedur-Vertrag
(contr ... -> contr) |
Dieser Vertrag ist dann für einen Wert gültig, wenn dieser eine
Prozedur ist. Er erklärt außerdem, daß die Verträge vor dem ->
für die Argumente der Prozedur gelten und der Vertrag nach dem ->
für den Rückgabewert.
}
1.13.7 list
(list contr) |
Dieser Vertrag ist dann für einen Wert gültig, wenn dieser eine Liste ist,
für dessen Elemente contr gültig ist.
1.13.8 Vertrags-Variablen
%a |
%b |
%c |
... |
Dies ist eine Vertragsvariable: sie steht für einen Vertrag, der für jeden Wert gültig ist.
1.13.9 combined
(combined contr ...) |
Dieser Vertrag ist für einen Wert gültig, wenn er für alle der Verträge
contr gültig ist.