, , , . , aBlank Pos, a Gen Pos, update su aBlank aCandidate ! , , , ; ,
similarSudoku :: Sudoku -> Gen Sudoku
:
similarSudoku su = do aBlank <- elements (blanks su)
aCandidate <- elements (candidates su aBlank)
return (update su aBlank aCandidate)
:
similarSudoku su = liftM2 (update su) (elements (blanks su)) (elements (candidates su aBlank))
prop_similar :: Sudoku -> Gen Bool
prop_similar su = do newSu <- similarSudoku su
return (isSudoku newSu && isOkay newSu)
Testable Bool
Testable prop => Testable (Gen prop)
(Arbitrary a, Show a, Testable prop) => Testable (a -> prop)
Sudoku -> Gen Bool Testable ( instance Arbitrary Sudoku).