Haskell - definiendo una función con guardias dentro de un 'donde'

Estoy empezando a enseñarme a mí mismo Haskell. Este código debe hacer factorización prima:

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)

Me sale un error de análisis en la línea comentada. Creo que mi problema puede ser quelowestDivisorHelper tiene guardias, pero el compilador no sabe si los guardias pertenecen alowestDivisorHelper olowestDivisor. ¿Cómo puedo evitar esto?

Debo agregar que no quería definir la función de ayuda en el nivel superior para ocultar los detalles de la implementación. Importar el archivo no debería llevar la función auxiliar con él.

Respuestas a la pregunta(1)

Su respuesta a la pregunta