(define (enumerate from step) (cons-stream from (enumerate (+ from step) step))) (define (accumulate s accumulator init) ;geeft een stream weer te vergelijken met s/(1-x) (cond ((eq? the-empty-stream (head s)) the-empty-stream) (else (let ((el (accumulator (head s) init))) (cons-stream el (accumulate (tail s) accumulator el)))))) (define (map action s) (if (eq? the-empty-stream s) the-empty-stream (cons-stream (action (head s)) (map action (tail s))))) (define (first n stream) (if (= n 0) (begin (newline) the-non-printing-object) (begin (display (head stream)) (display " ") (first (-1+ n) (tail stream))))) (define e-stream (accumulate (map (lambda (x) (/ 1 x)) (accumulate (enumerate 1 1) * 1)) + 1)) ;--hierboven waren het zelfgeschreven functies, nu neem ik de functies uit het boek (define (map proc stream) (if (empty-stream? stream) the-empty-stream (cons-stream (proc (head stream)) (map proc (tail stream))))) (define (filter pred stream) (cond ((empty-stream? stream) the-empty-stream) ((pred (head stream)) (cons-stream (head stream) (filter pred (tail stream)))) (else (filter pred (tail stream))))) (define (accumulate combiner init stream) (if (empty-stream? stream) init (combiner (head stream) (accumulate combiner init (tail stream))))) (define (enumerate-int low high) (if (> low high) the-empty-stream (cons-stream low (enumerate-int (1+ low) high)))) (define (fac x) (if (= x 0) 1 (* x (fac (-1+ x))))) (define (calc-sin x n) (accumulate + 0 (map (lambda (e) ((if (odd? (quotient e 2)) - +) (/ (expt x e) (fac e)))) (filter (lambda (n) (odd? n)) (enumerate-int 1 n)))))