我正在嘗試編寫一個改變Sudoku的道具,然後檢查它是否仍然有效。如何在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]
我現在這個道具struggeled 3小時,所以任何想法,歡迎!
那麼,'update'的類型是什麼?你認爲'aCandidate'和'aBlank'的類型是什麼? – 2009-12-01 21:51:29
我編輯了這篇文章,你能再看看嗎? – Mickel 2009-12-01 21:56:17
現在,檢查'[return x |的類型是什麼x < - (blanks su)]'因此是'aBlank'。 – 2009-12-01 22:08:13