-2

这是功能

toRevDigits :: Integer -> [Integer]
toRevDigits 0 = []
toRevDigits x
    | x<0 = []
    | otherwise = lastDigit x:(toRevDigits (dropLastDigit x))

这是测试

testRevDigits :: (Integer, [Integer]) -> Bool
testRevDigits (n, [d]) = toRevDigits n ==[n]

ex2Tests :: [Test]
ex2Tests = [Test "toRevDigits test" testRevDigits
            [(321,[1,2,3]), (0,[]), ((-17),[])]
           ]

这是错误

*** Exception: LAB8Tests.hs:27:1-44: Non-exhaustive patterns in function         testRevDigits

如何修复测试仪以使其正常工作?

4

1 回答 1

1

当然它是 - 在testRevDigits你匹配的[d]- 这意味着输入元组的第二个组件仅适用于长度为 1 的列表,但你传入更长的列表。

我最好的猜测是你想要这个:

testRevDigits :: (Integer, [Integer]) -> Bool
testRevDigits (n,expected) = toRevDigits n == expected
于 2016-04-20T03:56:13.650 回答