无法将类型“Integer”与“Int”匹配

时间:2015-03-20 15:51:44

标签: haskell

我正在制作项目Euler#41,这是我解决问题的一部分,我无法弄清楚如何绕过Haskell期待[Int]而不是{{1} }。 Diglist工作正常但我把它包括在内以防错误以某种方式涉及它。

[Integer]

错误是:

digList :: Integer -> [Integer]
digList n = digList' [] n where
        digList' xs n
                | n < 10        = n : xs
                | otherwise = digList' (lsd : xs) nxt
                where
                    lsd = n `mod` 10
                    nxt = n `div` 10

isNPandigital :: Integer -> Bool
isNPandigital n = isnp 1 (digList n) where --error on this line
    isnp i xs
        | i `elem` xs = isnp i $ delete i xs
        | i == length (digList n) = null xs
        | otherwise = False

1 个答案:

答案 0 :(得分:2)

iisnp的参数被推断为Int,因为您使用i `elem` xs,因为您使用i == length (digList n)。编译器认为i应该是Int,因为您要将其与length (digList n)进行比较,Int始终返回i `elem` xs,并且您正在使用xs ,因此[Int]必须包含(digList n)类型,但您为xs传入digList n[Integer]类型为{{1}},因此错误