Tags SICP

The code for this section is in Common Lisp.

Here’s the code for `integral` and `solve`. Note the usage of `labels` to translate Scheme’s recursive variable definitions to CL:

```(defun integral (delayed-integrand initial-value dt)
(labels (
(int ()
(cons-stream
initial-value
(let ((integrand (force delayed-integrand)))
(scale-stream integrand dt) (int))))))
(int)))

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

(y)))
```

#### Exercise 3.77

```(defun integral (delayed-integrand initial-value dt)
(cons-stream
initial-value
(let ((integrand (force delayed-integrand)))
(if (stream-null? integrand)
the-empty-stream
(integral
(delay (stream-cdr integrand))
(+  (* dt (stream-car integrand))
initial-value)
dt)))))
```

#### Exercise 3.78

```(defun solve-2nd (a b y0 dy0 dt)
(labels (
(y () (integral (delay (dy)) y0 dt))
(dy () (integral (delay (ddy)) dy0 dt))
(scale-stream (dy) a)
(scale-stream (y) b))))
(y)))
```

#### Exercise 3.79

```(defun solve-2nd (f y0 dy0 dt)
(labels (
(y () (integral (delay (dy)) y0 dt))
(dy () (integral (delay (ddy)) dy0 dt))
(ddy () (stream-map f (dy) (y))))
(y)))
```

#### Exercise 3.80

```(defun RLC (R L C dt)
(labels (
(rlc-model (vc0 il0)
(labels (
(il ()
(integral (delay (dil)) il0 dt))
(vc ()
(integral (delay (dvc)) vc0 dt))
(dil ()