Haskell 中出现奇怪的编译错误
Strange compile error in Haskell
为什么 max prod nextProd
的类型在下面的函数中被推断为 Int->Int->Int
而不是 Int?
import qualified Data.Vector as DV
largestProduct::DV.Vector Int->(Int, Int)
largestProduct digits = foldl lastProdAndMax (0,0) [1..((DV.length digits) - 13)] where
lastProdAndMax _ 1 = (first, first) where first = DV.foldl (*) 1 $ DV.take 13 digits
lastProdAndMax (prod, max) i = (nextProd, max prod nextProd)
where nextProd = (prod `div` ((DV.!) digits (i-13))) * ((DV.!) digits i)
你的错误在
lastProdAndMax (prod, max) i = (nextProd, max prod nextProd)
^^^
在该范围内,max
是一个 Int
(重载 max
函数)。
为什么 max prod nextProd
的类型在下面的函数中被推断为 Int->Int->Int
而不是 Int?
import qualified Data.Vector as DV
largestProduct::DV.Vector Int->(Int, Int)
largestProduct digits = foldl lastProdAndMax (0,0) [1..((DV.length digits) - 13)] where
lastProdAndMax _ 1 = (first, first) where first = DV.foldl (*) 1 $ DV.take 13 digits
lastProdAndMax (prod, max) i = (nextProd, max prod nextProd)
where nextProd = (prod `div` ((DV.!) digits (i-13))) * ((DV.!) digits i)
你的错误在
lastProdAndMax (prod, max) i = (nextProd, max prod nextProd)
^^^
在该范围内,max
是一个 Int
(重载 max
函数)。