Ich versuche, einen 'print out'-Funktionsaufruf in eine Haskell-Funktion zu integrieren.
(eine einfache Fehlermeldung).
Unten ist mein Code und Fehlermeldung aus dem Compiler (GHC 6.10).
Ich verstehe nicht ganz, warum sie die putStr
Aufruf und das leere Array.
Das leere Array ist der Rückgabewert für diesen speziellen Fall (die Ausdruckmeldung ist eigentlich nur ein Stub für jetzt).
Haben Sie eine Idee, warum das nicht funktioniert?
Mein Code:
isAFactor :: Integer -> Integer -> Bool
isAFactor x y = x \`mod\` y == 0
findFactors :: Integer -> Integer -> \[Integer\]
findFactors counter num =
let quotient = div num 2
in
if(counter > quotient)
then do
putStrLn ("factorList is : " ++ show quotient) (\*\*\* Line 10\*\*\*)
\[\]
else if(isAFactor num counter)
then \[counter\] ++ \[quotient\] ++ findFactors (counter + 1) num
else
findFactors (counter + 1) num
Fehler von ghc
test.hs:10:4:
Couldn't match expected type \`\[a\] -> \[Integer\]'
against inferred type \`IO ()'
In the expression:
putStrLn ("factorList is : " ++ show quotient) \[\]
In the expression:
do putStrLn ("factorList is : " ++ show quotient) \[\]
In the expression:
if (counter > quotient) then
do putStrLn ("factorList is : " ++ show quotient) \[\]
else
if (isAFactor num counter) then
\[counter\] ++ \[quotient\] ++ findFactors (counter + 1) num
else
findFactors (counter + 1) num