Maybe I'm missing the point of the question, but I'm not sure I understand why that internal define is not equivalent to a let. It looks like the code is binding its value and then returning that value. Unless there's something going on here involving lazy evaluation or something? Without knowing more about how cons-stream, scale-stream and add-streams work, it's hard to know.

Do you have a pointer into SICP (chapter, exercise number, etc.)?

On 13 Dec 2021, at 14:04, Marco Antoniotti wrote:

Hi

apologies for the stupid question. I was reviewing some teaching material
and looked at the following Scheme (form SICP) code about "streams".

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

The question is how you'd rendered it in Common Lisp or how you would
provide some macrology to mimic the inner define. I know this has been
asked before... I am sure somebody knows the answer.

All the best

--
Marco Antoniotti, Professor tel. +39 - 02 64 48
79 01
DISCo, Università Milano Bicocca U14 2043 http://dcb.disco.unimib.it
Viale Sarca 336
I-20126 Milan (MI) ITALY