(define stream-car car) (define stream-cdr (lambda (stm) (force (cdr stm)))) (define-macro (stream-cons head tail) `(cons ,head (delay ,tail))) (define stream? (lambda (stm) (and (pair? stm) (promise? (cdr stm))))) (define stream-map (lambda (proz stm) (stream-cons (proz (stream-car stm)) (stream-map proz (stream-cdr stm))))) (define show-stream (lambda (stm n) (if (= n 0) (display "...") (begin (display (stream-car stm)) (show-stream (stream-cdr stm) (- n 1))))))
Natürliche Zahlen:
(define natstream (lambda (n) (stream-cons n (natstream (+ n 1))))) (define natzahlen (natstream 0))
(show-stream natzahlen 30)
ausführen