In section 3.5.4 , i saw this block:

(define (integral delayed-integrand initial-value dt)
    (define int
        (cons-stream initial-value
            (let ((integrand (force delayed-integrand)))
                (add-streams (scale-stream integrand dt)

Normally if this was something like:

(define (stream-map proc s)
    (if (stream-null? s)
            (cons-stream (proc (stream-car s))
                (stream-map proc (stream-cdr s)))))

The stream-cdr s would be evaluated as (cons-stream (stream-car (cdr s)) delay<>) even when the actual call would be in a delay. ie even though the stream-map function itself is delayed, the arguments are pre-computed.

Then why is let not pre-computed?

What I think? I think let is a lambda function with no arguments, so its execution is delayed

Can someone please help me confirm this?



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.