我正在使用 ByteStrings,并且扩展了很多 Word8。当我写的时候sum word8List,返回的值也是 Word8,但我知道我的数据,这个总和对于 Word8 来说太大了。我应该避免总和,还是它的工作方式与我想象的不同?
是否有一些通用函数可以在不溢出的情况下对数字求和,例如Num a => a -> Integer?
sum 将使用(+)为该类型定义的,因此对于 a Word8,它将进行环绕。
然而,可以先执行映射,例如与fromIntegral :: (Integral a, Num b) => a -> b,因此数转换为另一种数字类型(如Integer,Word16,Word32等等)。例如:
sum (map fromIntegral word8List) :: IntegerRun Code Online (Sandbox Code Playgroud)