haskell - 汇总列表时是否有防止溢出的通用方法?
问题描述
我正在使用 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) :: Integer
推荐阅读
- jquery - DataTable 如何将 id 放在按钮上?
- ionic-framework - Ionic 4 SQLite - TypeError: Object(…) is not a function
- c# - 如何忽略 linqpad 中未使用的 dll 引用
- groovy - 如何防止 Groovy 从访问器方法创建字段?
- angular - 如何在 Angular 6 打字稿中访问对象数组中的单个属性?
- java - SpannableStringBuilder append() NullPointerException
- javascript - 列表分配在 JavaScript 中是如何工作的?
- python - 为什么python调用sys.exit时upstart服务不停止
- jquery - 如何从选定的行 datatable.js 获取数据
- machine-learning - 次优的早期停止可以防止机器学习中的过度拟合?