我正在考虑专门用于信号处理.假设我想做一些像输入信号幅度加倍的事情.我希望它非常快,所以我希望信号保持在连续的存储器中(例如,未装箱的矢量).但是这个信号可以无限期地继续下
Haskell中是否有一个数据结构可以缓冲这些数据块,以便我可以获得连续的内存性能,但是将数据视为无限流?
这只是一个很长的镜头,但是如何使用 streams足够大的无盒装载体?这将具有矢量性能的优势,同时, fusion归功于流.更新:想法是定义一个新类型,例如:
import Data.Array.Unboxed import Data.Stream import Data.Word newtype Word8Stream = Word8Stream (Stream (UArray Int Word8))
然后定义您需要的通用函数,例如
smap :: (Word8 -> Word8) -> Word8Stream -> Word8Stream smap f (Word8Stream s) = Word8Stream $fmap (amap f) s