Code Review

Compare your solutions

    #lang racket

(define (solve f y0 dt)
  (define y (integral (delay dy) y0 dt))
  (define dy (stream-map f y))
  y)


(define (integral delayed-integrand initial-value dt)
  (stream-cons initial-value
               (let ((integrand (force delayed-integrand)))
                 (if (stream-empty? integrand)
                     empty-stream
                     (integral (stream-rest integrand)
                               (+ (* dt (stream-first integrand))
                                  initial-value)
                               dt)))))

(stream-ref (solve (lambda (y) y) 1 0.001) 1000)