6 Stimmen

Fehler beim Aufruf von putStrLn in der Funktion

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X