Ich versuche, ein Sieb der Erasthosthenes Funktion zu schreiben, die einem Benutzer alle Primzahlen von 2 bis zu seiner oberen Grenze gibt. Also habe ich diesen Code geschrieben:Nicht erschöpfende Muster in der Funktion definiert in GHCi
main = do
putStrLn "Upper Limit"
g <- readLn
let sieve [] = []
let sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p /= 0]
let primes = sieve [2..g]
print primes
Der Code kompiliert und mir die richtige Lösung zu geben, aber ich bin immer diese Ausnahme am Ende der Lösung: *** Ausnahme: Nicht erschöpfende Muster in Funktionssieb Also habe ich überprüft, welche Muster nicht übereinstimmen.
warning: [-Wincomplete-patterns]
Pattern match(es) are non-exhaustive
In an equation for `sieve': Patterns not matched: (_:_)
warning: [-Wincomplete-patterns]
Pattern match(es) are non-exhaustive
In an equation for `sieve': Patterns not matched: []
Weicht Ich verstehe nicht, da ich let sieve [] = []
gegeben habe, und ich dachte, _ in Haskell: jede Variable so etwas macht das Muster (:) bedeuten? Jede Hilfe wäre willkommen.
es tut dies tun, wenn Sie sie als Funktionen außerhalb des Haupt schreiben? – Carcigenicate
Mögliches Duplikat von [Nicht vollständiges Muster in Funktion in GHCi] (http://stackoverflow.com/questions/26738392/non-exhaustive-pattern-in-function-in-ghci) – amalloy