;; 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 sumfuns) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) ; Berechne die Summe aller ganzen Zahlen zwischen zwei Grenzen (: num-sum (integer integer -> integer)) (define num-sum (lambda (a b) (if (> a b) 0 (+ a (num-sum (+ a 1) b))))) (define square (lambda (x) (* x x))) ; Berechne die Summe der Quadrate aller ganzen Zahlen zwischen zwei Grenzen (: sq-sum (integer integer -> integer)) #;(define sq-sum (lambda (a b) (if (> a b) 0 (+ (square a) (sq-sum (+ a 1) b))))) (define inc (lambda (x) (+ x 1))) (define sq-sum (lambda (a b) (sum square inc a b))) ; Berechne eine Näherung für pi/8 als Summe (: pi-sum (integer integer -> real)) #;(define pi-sum (lambda (a b) (if (> a b) 0 (+ (/ 1 (* a (+ a 2))) (pi-sum (+ a 4) b))))) ; Allgemeines Schema: (: sum ((integer -> number) (integer -> integer) integer integer -> number)) #;(define sum (lambda (fun next a b) (if (> a b) 0 (+ (fun a) (sum fun next (next a) b))))) #;(define pi-fun (lambda (x) (/ 1 (* x (+ x 2))))) #;(define plus4 (lambda (x) (+ x 4))) #;(define pi-sum (lambda (a b) (sum pi-fun plus4 a b))) #;(define pi-sum (lambda (a b) (sum (lambda (x) (/ 1 (* x (+ x 2)))) (lambda (x) (+ x 4)) a b))) (define f (lambda (x y) (letrec ((a (+ 1 (* x y))) (b (- 1 y))) (+ (* y b) (* a b))))) (define pi-sum (lambda (a b) (letrec ((pi-fun (lambda (x) (/ 1 (* x (+ x 2))))) (plus4 (lambda (x) (+ x 4)))) (sum pi-fun plus4 a b)))) ; Neudefinition: (define sum (lambda (fun next a b) (letrec ((sum-up (lambda (x) (if (> x b) 0 (+ (fun x) (sum-up (next x))))))) (sum-up a))))