Próbuję napisać prop, który zmienia Sudoku, a następnie sprawdza, czy jest on nadal ważny.Jak używać 'oneof' w quickCheck (Haskell)
Jednak nie jestem pewien, jak poprawnie używać funkcji "oneof". Czy możesz mi podać jakieś wskazówki?
prop_candidates :: Sudoku -> Bool
prop_candidates su = isSudoku newSu && isOkay newSu
where
newSu = update su aBlank aCandidate
aCandidate = oneof [return x | x <- candidates su aBlank]
aBlank = oneof [return x | x <- (blanks su)]
Oto kilka informacji ...
type Pos = (Int, Int)
update :: Sudoku -> Pos -> Maybe Int -> Sudoku
blanks :: Sudoku -> [Pos]
candidates :: Sudoku -> Pos -> [Int]
[return x | x <- (blanks example)] :: (Monad m) => [m Pos]
Mam struggeled z tym rekwizytem w ciągu 3 godzin teraz, więc wszelkie pomysły są mile widziane!
Cóż, jaki jest typ "aktualizacji"?Jak myślisz, czym będą typy "aCandidate" i "aBlank"? –
Edytowałem post, czy mógłbyś jeszcze raz spojrzeć? – Mickel
Teraz sprawdź, jaki jest typ '[return x | x <- (blanks su)] 'a zatem z' aBlank'. –