;; 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 natuerlich) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) (define-record-procedures null-sorte make-null-sorte null? ()) (: make-null-sorte (-> null-sorte)) (define null (make-null-sorte)) (define natürlich (signature (mixed null-sorte nichtnull-sorte))) (define-record-procedures nichtnull-sorte sukz nichtnull? (präd)) (: sukz (natürlich -> natürlich)) (: präd (nichtnull-sorte -> natürlich)) ;plus: zwei natuerliche zahlen addieren (check-expect (plus null null) null) (check-expect (plus (sukz null) null) (sukz null)) (check-expect (plus (sukz (sukz (sukz null))) (sukz (sukz null))) (sukz (sukz (sukz (sukz (sukz null)))))) (: plus (natürlich natürlich -> natürlich)) (define plus (lambda (n m) (cond ((null? n) m) ((nichtnull? n) (sukz (plus (präd n) m))) )))