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