Haskell - Definieren einer Funktion mit Wachen innerhalb eines "Wo"

Ich fange gerade damit an, mir selbst Haskell beizubringen. Dieser Code soll die Primfaktorisierung durchführen:

divides :: Integer -> Integer -> Bool
divides small big = (big `mod` small == 0)

lowestDivisor :: Integer -> Integer
lowestDivisor n = lowestDivisorHelper 2 n
    where lowestDivisorHelper m n
        | (m `divides` n) = m  -- these should belong to lowestDivisorHelper
        | otherwise = lowestDivisorHelper (m+1) n

primeFactors :: Integer -> [Integer]
primeFactors 1 = []
primeFactors n
    | n < 1 = error "Must be positive"
    | otherwise = let m = lowestDivisor n
                  in m:primeFactors (n/m)

In der kommentierten Zeile wird ein Analysefehler angezeigt. Ich denke mein Problem könnte das seinlowestDivisorHelper hat Wachen, aber der Compiler weiß nicht, ob die Wachen dazu gehörenlowestDivisorHelper oderlowestDivisor. Wie komme ich darum herum?

Ich sollte hinzufügen, dass ich die Hilfsfunktion nicht auf der obersten Ebene definieren wollte, um die Implementierungsdetails zu verbergen. Das Importieren der Datei sollte nicht die Hilfsfunktion mit sich bringen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage