;; 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 zahlenlisten) (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-record-procedures nll kons nichtleer? (kopf rumpf)) (: kons (number zahlenliste -> nll)) (: nichtleer? (%value -> boolean)) (: kopf (nll -> number)) (: rumpf (nll -> zahlenliste)) (define leer (make-leere-liste)) (define zahlenliste (signature (mixed leere-liste nll))) ; Elemente einer Liste addieren (: list-sum (zahlenliste -> number)) (define list-sum (lambda (xs) (cond ((leer? xs) 0) ((nichtleer? xs) (+ (kopf xs) (list-sum (rumpf xs))))))) (: list-length (zahlenliste -> 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)