title: Scheme: problem about display when using `delay` expression
body: <p>This is a problem related to ex3.51 in SICP, here is the code</p>
  
  <pre><code>(define (cons-stream x y)
    (cons x (delay y)))
  (define (stream-car stream) (car stream))
  (define (stream-cdr stream) (force (cdr stream)))
  (define (stream-map proc s)
    (if (stream-null? s)
        the-empty-stream
        (cons-stream
         (proc (stream-car s))
         (stream-map proc (stream-cdr s)))))
  (define (stream-enumerate-interval low high)
    (if (&gt; low high)
        the-empty-stream
        (cons-stream
         low
         (stream-enumerate-interval (+ low 1) high))))
  (define (stream-ref s n)
    (if (= n 0)
        (stream-car s)
        (stream-ref (stream-cdr s) (- n 1))))
  (define (show x)
    (display x)
    x)
  ;test
  (stream-map show (stream-enumerate-interval 0 10))
  </code></pre>
  
  <p>the output is <code>012345678910(0 . #&lt;promise&gt;)</code>.</p>
  
  <p>but I thought the delay expression in <code>cons-stream</code> delayed the evaluation, if i use a different processing function in <code>stream-map</code> like <code>lambda (x) (+ x 1)</code> the output <code>(1 . #&lt;promise&gt;)</code> is more reasonable, so why does <code>display</code> print all the numbers? </p>