;; Die ersten drei Zeilen dieser Datei wurden von DrRacket eingefügt. Sie enthalten Metadaten ;; über die Sprachebene dieser Datei in einer Form, die DrRacket verarbeiten kann. #reader(lib "DMdA-beginner-reader.ss" "deinprogramm")((modname pair) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) ; Ein Paar besteht aus ; - einer beliebigen ersten Komponente ; - einer beliebigen zweiten Komponente (define-record-procedures-parametric pair pair-of make-pair pair? (pair-first pair-second)) (: make-pair (%a %b -> (pair-of %a %b))) (: pair? (any -> boolean)) (: pair-first ((pair-of %a %b) -> %a)) (: pair-second ((pair-of %a %b) -> %b)) (: p1 (pair-of integer string)) (define p1 (make-pair 1 "Scheme")) (: p2 (pair-of string boolean)) (define p2 (make-pair "Scheme" #f)) ; Zahlenliste definiert mit parametrisierten Paaren (define numlist (signature (mixed empty-list (pair-of number numlist)))) ; Stringliste definiert mit parametrisierten Paaren (define stringlist (signature (mixed empty-list (pair-of string stringlist)))) (define list-of (lambda (sig) (signature (mixed empty-list (pair-of sig (list-of sig)))))) (: list12 (list-of number)) (define list12 (make-pair 1 (make-pair 2 empty)))