gpt4 book ai didi

haskell - [Int] 之和导致溢出

转载 作者:行者123 更新时间:2023-12-02 16:54:42 25 4
gpt4 key购买 nike

我有一个返回[Int]的函数,我想获取列表的总和。然而,虽然每个单独的元素都小于 maxBound::Int,但总和肯定更大。

一个(人为的)示例:

ghci> sum ([1..10000000] :: [Int])
-2004260032

有没有办法强制sum累加为Integer而不是Int?难道是我想错了?

最佳答案

sum 返回与其输入列表元素相同的类型:

sum :: Num a => [a] -> a

因此您需要向其传递一个[Integer]才能返回一个Integer。如果您的输入列表已经是[Int]类型,您可以使用该函数:

sum . map fromIntegral

相反:

ghci> sum . map fromIntegral $ ([1..10000000] :: [Int])
50000005000000

关于haskell - [Int] 之和导致溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738112/

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