The reason I didn't do this in thunk.el is that thunks are just bare lambdas, so there is no way to get rid it "from the inside", as it were. Whereas for streams, it's just a matter of list editing. Some additional things that I thought of changing, but I didn't yet: - stream--identifier vs just using '--stream-- directly, I don't see what's the benefit of indirection here. - stream-make should use cons instead of list (or maybe a struct?). - stream-empty should just be a constant.