;; 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-assignments-reader.ss" "deinprogramm")((modname account-message) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #t #t none explicit #f ()))) ; Erzeuge ein Konto mit Operationen zum Abheben und Einzahlen ; Nachrichtenidentifikator für das Einzahlen oder Abheben: (define account-message (signature (one-of "deposit" "withdraw"))) (: make-account (natural -> (account-message -> (natural -> natural)))) (define make-account (lambda (balance) ; Programmiertechnik: Nachrichtenweitergabe (lambda (message) (cond ((string=? message "withdraw") (lambda (amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) (violation "No money!")))) ((string=? message "deposit") (lambda (amount) (begin (set! balance (+ balance amount)) balance))))))) (: acct (account-message -> (natural -> natural))) (define acct (make-account 100)) (define peter-acct (make-account 100)) #;(define paul-acct (make-account 100)) (define paul-acct peter-acct)