gpt4 book ai didi

haskell - 是否存在具有未装箱矢量性能的无限列表?

转载 作者:行者123 更新时间:2023-12-04 14:58:27 26 4
gpt4 key购买 nike

我正在考虑专门用于信号处理。假设我想做一些事情,比如将输入信号的幅度加倍。我希望它非常快,所以我希望将信号保存在连续的内存中(例如未装箱的向量)。但是这个信号可以无限期地持续下去,所以我希望它被视为一个无限列表;我宁愿调用map (*2) signal一次,而不是为每个信号 block 调用它。

Haskell 中是否有可以缓冲这些数据 block 的数据结构,以便我可以获得连续的内存性能,但将数据视为无限流?

最佳答案

这只是一个长镜头,但是使用 streams 怎么样?足够大的未装箱向量 block ?这将具有向量性能的优势,同时,fusion感谢溪流。

更新:这个想法是定义一个 newtype如:

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

关于haskell - 是否存在具有未装箱矢量性能的无限列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24468061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com