;; 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-vanilla-reader.ss" "deinprogramm")((modname anylisten) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) (define-record-procedures leere-liste make-leere-liste leer? ()) (: make-leere-liste (-> leere-liste)) (: leer? (%value -> boolean)) (define leer (make-leere-liste)) (define-record-procedures nll kons nichtleer? (kopf rumpf)) (: kons (%a liste -> liste)) (: nichtleer? (%value -> boolean)) (: kopf (nll -> %a)) (: rumpf (nll -> liste)) (define liste (signature (mixed leere-liste nll))) (: list-sum (liste -> number)) (define list-sum (lambda (xs) (cond ((leer? xs) 0) ((nichtleer? xs) (+ (kopf xs) (list-sum (rumpf xs))))))) (: list-length (liste -> number)) (define list-length (lambda (xs) (cond ((leer? xs) 0) ((nichtleer? xs) (+ 1 (list-length (rumpf xs))))))) (define liste-1 leer) (define liste-2 (kons 1 liste-1)) (define liste-3 (kons 2 liste-2)) (list-length liste-3) (: list-1 liste) (define list-1 (kons "Banane" (kons 1 leer))) (kopf list-1) (: list-2 liste) (define list-2 (kons 1 (kons 4 leer))) (: list-3 liste) (define list-3 (kons "Apple" (kons "Banana" leer))) (: list-4 liste) (define list-4 (kons list-3 leer)) (: list-5 liste) (define list-5 list-4) (: list-6 liste) (define list-6 (kons 1 (kons "Banana" leer))) list-6 (kopf list-6) ; es treten keine Signaturverletzungen auf (list-sum list-6);ergibt einen Fehler zur Laufzeit.