;; 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)) ; %a,%b: Signaturvariablen (: 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 integer)) (define p1 (make-pair 42 50)) (: p2 (pair-of string string)) (define p2 (make-pair "Hello" "World")) (: p3 (pair-of integer string)) (define p3 (make-pair 99 "Luftballons")) (define p4 (make-pair "Scheme" #t)) ; Neue Definition der Signatur von Zahlenlisten #;(define numlist (signature (mixed empty-list (pair-of number numlist)))) ; Neue Definition der Signatur von Stringlisten #;(define stringlist (signature (mixed empty-list (pair-of string stringlist)))) ; Neue Definition der Signatur von beliebigen homogenen Listen (define list-of (lambda (sig) (signature (mixed empty-list (pair-of sig (list-of sig)))))) (: nums (list-of integer)) (define nums (make-pair 1 (make-pair 2 (make-pair 3 empty))))