Ich fange gerade an, mich selbst zu unterrichten Haskell. Dieser Code soll Primfaktorzerlegung machen:Haskell - Definieren einer Funktion mit Wachen in einem 'wo'
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)
Ich erhalte einen Parsefehler auf der kommentierten Linie. Ich denke mein Problem könnte sein, dass lowestDivisorHelper
Wachen hat, aber der Compiler weiß nicht, ob die Wachen zu lowestDivisorHelper
oder lowestDivisor
gehören. Wie komme ich hier zurecht?
Bearbeiten: Ich sollte hinzufügen, dass ich nicht die Hilfsfunktion auf der obersten Ebene definieren wollte, um die Implementierungsdetails zu verbergen. Der Import der Datei sollte nicht die Hilfsfunktion übernehmen.
"Das Importieren der Datei sollte die Hilfsfunktion nicht übernehmen." In diesem Fall exportieren Sie es einfach nicht. –