Sto provando a scrivere un supporto che cambia un Sudoku e poi controlla se è ancora valido.Come utilizzare "oneof" in quickCheck (Haskell)
Tuttavia, non sono sicuro di come utilizzare correttamente la funzione "oneof". Puoi darmi qualche suggerimento, per favore?
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)]
Qui ci sono alcuni più informazioni ...
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]
ho struggeled con questo puntello per 3 ore, in modo che tutte le idee sono i benvenuti!
Bene, qual è il tipo di "aggiornamento"?E cosa pensi che saranno i tipi di "aCandidate" e "aBlank"? –
Ho modificato il post, puoi dare un'occhiata di nuovo? – Mickel
Ora, controlla quale è il tipo di '[return x | x <- (blanks su)] 'e quindi di' aBlank'. –