2016-04-20 3 views
-2

dies die FunktionHalte Anpassungsfehler in Haskell bekommen, wenn Funktion testet

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

dies den Test

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

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

Dies ist der Fehler

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

wie kann ich die Tester reparieren zu funktionieren, damit es funktioniert?

Antwort

1

natürlich ist es - in Ihrem testRevDigits Sie [d] übereinstimmen - die die zweite Komponente des Eingangstupel bedeutet, dass mit Listen der Länge 1 nur funktionieren, aber sie passieren in längeren Listen.

Meine beste Vermutung ist, dass Sie dies wünschen:

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