;; 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 cookie) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) (: simple-choc chocolate-cookie) (define simple-choc (make-chocolate-cookie 10 12)) (define double-choc (make-chocolate-cookie 20 12)) ; Gewicht eines Schokokekses bestimmten (: chocolate-cookie-weight (chocolate-cookie -> real)) (check-expect (chocolate-cookie-weight simple-choc) 22) (check-expect (chocolate-cookie-weight double-choc) 32) #;(define chocolate-cookie-weight (lambda (c) ...(chocolate-cookie-chocolate c) ...(chocolate-cookie-cookie c) ...)) (define chocolate-cookie-weight (lambda (c) (+ (chocolate-cookie-chocolate c) (chocolate-cookie-cookie c)))) ; Aus einem Keks einen neuen mit doppelt so hohem Schokoladenanteil erzeugen (: double-chocolate-in-cookie (chocolate-cookie -> chocolate-cookie)) (check-expect (double-chocolate-in-cookie simple-choc) double-choc) #;(define double-chocolate-in-cookie (lambda (c) ...(chocolate-cookie-chocolate c) ...(chocolate-cookie-cookie c) ...)) ; Ergebnis ist Cookie, daher Konstruktor: #;(define double-chocolate-in-cookie (lambda (c) (make-chocolate-cookie ...(chocolate-cookie-chocolate c) ...(chocolate-cookie-cookie c) ...))) ; geschickte Kombination: (define double-chocolate-in-cookie (lambda (c) (make-chocolate-cookie (* 2 (chocolate-cookie-chocolate c)) (chocolate-cookie-cookie c))))