Haskell 对列表求和时是否有防止溢出的一般方法?

Haskell 对列表求和时是否有防止溢出的一般方法?,haskell,sum,Haskell,Sum,我正在使用ByteStrings,并扩展了很多Word8。 当我写求和word8List时,返回的值也是Word8,但我知道我的数据,该求和对于Word8来说太大了。我应该避免求和,还是它的工作方式与我想象的不同 是否有一些通用函数用于对数字求和而不溢出,例如Num a=>a->Integer?求和将使用为该类型定义的(+),因此对于Word8,它将进行概括 但是,您可以先执行映射,例如,使用,然后将数字转换为另一个数字类型(如整数,Word16,Word32,等等)。例如: sum (map

我正在使用ByteStrings,并扩展了很多Word8。 当我写
求和word8List
时,返回的值也是Word8,但我知道我的数据,该求和对于Word8来说太大了。我应该避免求和,还是它的工作方式与我想象的不同


是否有一些通用函数用于对数字求和而不溢出,例如
Num a=>a->Integer

求和将使用为该类型定义的
(+)
,因此对于
Word8
,它将进行概括

但是,您可以先执行映射,例如,使用,然后将数字转换为另一个数字类型(如
整数
Word16
Word32
,等等)。例如:

sum (map fromIntegral word8List) :: Integer

sum(映射自integral word8List)::Integer
只需首先将其映射到更大的类型。