私は数独を変えてそれがまだ有効であるかどうかを調べるために小道具を書こうとしています。quickcheck(Haskell)で 'oneof'を使用する方法
しかし、 "oneof"関数を正しく使用する方法がわかりません。あなたは私にいくつかのヒントをくれますか?ここで
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)]
は、いくつかのより多くの情報が...
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]
私は今、3時間この小道具でstruggeledているので、任意のアイデアを歓迎します!
「更新」の種類は何ですか?そして、「aCandidate」と「aBlank」の種類はどうなると思いますか? –
投稿を編集しました。どうぞご覧ください。 – Mickel
ここで、 '[return x | x < - (blanks su)] 'となり、' aBlank'の結果となります。 –