BuK/IIm20/Vorlesung 2 Grüning
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Scheme</language>
== Hilbert Hotel ==
<code id="605dd0651e5eb">
(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)
(letrec
([show
(lambda (stm n ls)
(if (= n 0)
(apply display (append ls (list "...")))
(show (stream-cdr stm) (- n 1) (append ls (list (stream-car stm) ", ")))))])
(show stm n ()))))
</code>
<code id="605dd0651e650">
(define baue-hilberthotel
(lambda ()
(stream-cons #f (baue-hilberthotel)))
)
(define hilberthotel (baue-hilberthotel))
</code>
<run id="605dd0651e6ad">
(show-stream hilberthotel 11)
</run>