我正在Haskell中构建一个Sudoku解算器,我有两个函数:
genProblemm :: Node -> IO Node
newSudoku :: IO Node
用于生成数独谜题。我想使用QuickCheck
库来测试我的求解器。是否可以使用这些函数使Node
成为Arbitrary
的实例?我无法找到一般的方法......
我只有这种类型:
instance Arbitrary Node where
arbitrary =
...但我不知道如何使用我现有的函数编写arbitrary
,这些函数都是IO
类型。
编辑:
Node = (Sudoku, [(Column, Row, [Int])])
type Sudoku = (Row,Column) -> Int
节点是整个数独。