I'm thinking specifically for signal processing. Let's say I wanted to do something like double the magnitude of an incoming signal. I would want it to be very fast, so I would want the signal to be held in contiguous memory (e.g. unboxed vectors). But this signal could go on indefinitely, so I would want it to be treated as an infinite list; I'd rather call map (*2) signal
once instead of calling it for every signal chunk.
Is there a data structure in Haskell that would buffer these data chunks so that I could get contiguous memory performance, but treat the data as an infinite stream?