;; 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 parametriclist) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) ; Eine nicht-leere Liste besteht aus ; - einem ersten beliebigem Element (any) ; - einer Restliste (Liste) (define-record-procedures-parametric nonempty-list nonempty-list-of cons cons? (first rest)) ; Eine Liste ist eins der Folgenden: ; - eine leere Liste (empyt-list) ; - eine nicht-leere Liste (nonempty-anylist) (define list-of (lambda (sig) (signature (mixed empty-list (nonempty-list-of sig (list-of sig)))))) (: cons (%a (list-of %a) -> (nonempty-list-of %a (list-of %a)))) (: cons? (any -> boolean)) (: first ((nonempty-list-of %a (list-of %a)) -> %a)) (: rest ((nonempty-list-of %a (list-of %a)) -> (list-of %a))) (: list2 (list-of string)) (define list2 (cons "Hello" (cons "World" empty))) ; homogene Liste (: prim4 (list-of integer)) (define prim4 (cons 2 (cons 3 (cons 5 (cons 7 empty))))) ; Bestimme die Summe aller Zahlen in einer Zahlenliste (: list-sum ((list-of number) -> number)) (check-expect (list-sum prim4) 17) (define list-sum (lambda (nl) (cond ((empty? nl) 0) ((cons? nl) (+ (first nl) (list-sum (rest nl)))))))