I think I am saying (eq? stream-type promise-type) is #t and Andre is saying
(eqv? stream-type promise-type) is #f. Both statements are correct. Since
both stream-type and promise-type are abstract, I can mix them up inside
(streams primitive) without consequence, except that it causes some
confusion. I guess it is more precise to say that the type of the
stream-car is a promise, not a stream, except that in the implementation
they are the same thing.

I do not agree that it is without consequence. From
(stream? (stream-car s)) ==> #t
one would conclude that the car element is always either infinite or a finite
stream ending in stream-null, which is not true.
Andre