Haskell - definiowanie funkcji ze strażnikami wewnątrz „gdzie”

Po prostu zaczynam uczyć siebie Haskella. Ten kod powinien mieć podstawową faktoryzację:

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)

Dostaję błąd analizowania w skomentowanej linii. Myślę, że mój problem może być takilowestDivisorHelper ma strażników, ale kompilator nie wie, czy należą do strażnikówlowestDivisorHelper lublowestDivisor. Jak to obejść?

Powinienem dodać, że nie chciałem definiować funkcji pomocniczej na najwyższym poziomie, aby ukryć szczegóły implementacji. Importowanie pliku nie powinno obejmować funkcji pomocniczej.

questionAnswers(1)

yourAnswerToTheQuestion