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 函数)。