Ich bin neu in Haskell. Bis jetzt ist es sehr schön, aber ich stoße auf Kopieren-Einfügen für meine QuickCheck-Eigenschaften, und ich möchte das beheben.Wie kann ich Constraint QuickCheck Parameter, z. nur nicht negative ints verwenden?
Hier ist ein erfundenes Beispiel:
prop_Myfunc :: [Int] -> (Int,Int) -> Bool
prop_Myfunc ints (i,j) = ints !! i == ints !! j
Das wird nicht funktionieren, weil Quick Check negative Zahlen erzeugt, so dass ich
*** Failed! (after 2 tests and 2 shrinks):
Exception:
Prelude.(!!): negative index
Ich habe versucht, nach Lösungen für diese Google, und ich habe zB gefunden NonNegative und ==>, aber ich verstehe nicht, wie sie funktionieren.
Wie kann ich das obige Beispiel einschränken, so dass i und j niemals negativ sind? Und auch, damit keiner zu hoch ist? Das heißt: 0 <= i,j < length ints
Ich denke du meinst '0 <= i, j
ErikR
@ user5402 Ja, danke! Ich werde das ändern. Werde deine Antwort so schnell wie möglich überprüfen, es sieht sehr gut aus. –