(load "constr-10.ss") ;;; SIGNATUR ;;; stream-ref: stream(X) number -> X ;;; ERKLÄRUNG ;;; (stream-ref s i) liefert das i-te Element des Stromes s, wobei die ;;; Zählung bei 0 anfängt. s muss entweder unendlich sein oder eine Länge ;;; größer als i haben. ;;; DEFINITION (define stream-ref (lambda (s i) (if (zero? i) (stream-head s) (stream-ref (stream-tail s) (sub1 i))))) ;;; SIGNATUR ;;; fibo: number number -> stream(number) ;;; ERKLÄRUNG ;;; (fibo f0 f1) liefert einen Strom zurück, dessen erste zwei Elemente durch ;;; f0 und f1 gegeben sind, und deren weitere Elemente durch das Bildungsgesetz ;;; f_{n+2} = f_{n+1} + f_{n} bestimmt sind. ;;; DEFINITION (define fibo (lambda (f0 f1) (make-stream-cons f0 (delay (fibo f1 (+ f0 f1)))))) ;;; SIGNATUR ;;; fibonacci: stream(number) ;;; ERKLÄRUNG ;;; fibonacci ist der Strom der Fibonacci-Zahlen ;;; DEFINITION (define fibonacci (fibo 0 1)) ;;; SIGNATUR ;;; fib: number -> number ;;; ERKLÄRUNG ;;; (fib i) ist die i-te Fibonacci-Zahl (define fib (lambda (i) (stream-ref fibonacci i)))