BuK/IIm20/Vorlesung 2 Grüning

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SchemeJS</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 ()))))

(define zeige-mir show-stream)

</code>

<code id="605dd0651e650">

(define baue-hilberthotel
  (lambda ()
    (stream-cons #f (baue-hilberthotel)))
  )

(define hilberthotel (baue-hilberthotel))
</code>

<run id="605dd0651e6ad">
(zeige-mir hilberthotel 11)
</run>