2016-04-20 7 views
-2

をテストするときに、これはこれはこれはエラーは機能

でテスト

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

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

ある機能

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

あるHaskellでマッチングエラーを取得しておいてください

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

どのように私はそれを動作させるために機能するためにテスターを修正できますか?当然の

答えて

1

それはです - あなたは[d]のために一致して、あなたのtestRevDigitsに - 入力タプルの第二の成分のみを長さ1のリストで動作しますが、あなたは長いリストを渡すことを意味します。

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

私の最高の推測では、あなたがこれをしたいということです