Estoy tratando de escribir un objeto que cambia un Sudoku y luego compruebo si todavía es válido.Cómo utilizar 'oneof' en quickCheck (Haskell)
Sin embargo, no estoy seguro de cómo usar la función "oneof" correctamente. ¿Puedes darme algunas pistas, por favor?
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)]
Éstos son algunos más información ...
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]
He struggeled con este apoyo durante 3 horas ahora, para que todas las ideas son bienvenidas!
Bueno, ¿cuál es el tipo de 'actualización'?¿Y qué crees que serán los tipos de 'aCandidate' y' aBlank'? –
He editado la publicación, ¿pueden volver a mirar? – Mickel
Ahora, compruebe cuál es el tipo de '[return x | x <- (blanks su)] 'y por lo tanto de' aBlank'. –