Bergervei/Streams
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SchemeJS</language>
<code id="607c64c02738c">
(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))))))
</code>
Natürliche Zahlen:
<code id="607c64c027409">
(define natstream
(lambda (n)
(stream-cons n (natstream (+ n 1)))))
(define natzahlen (natstream 0))
</code>
<run id="607c64c02748c">
(show-stream natzahlen 30)
</run>