I want to learn more
about Haskell and I started with my Sudoku solver
class SudokuClass
s where
initAreas :: s -> s
createEmptySudoku :: s
getBoardLength :: s ->
Int
setBoard :: s -> Board -> s
getCellToAreas :: s ->CellToAreas
... other functions with
default implementations
I created a Sudoku
solver for 9x9 sudoku's.
data Sudoku9x9 =
Sudoku9x9 {
board :: Board,
areas::
Areas,
cellToAreas :: CellToAreas
} deriving
(Show)
Board, Areas and
CellToAreas are of type Map.
After that I create
an instance:
instance SudokuClass
Sudoku9x9 where
initAreas s = .....
After implementing
the 9x9 solver I wanted to create a second instance SudokuTwins,
that solves a different kind of sudoku, but uses the same
record:
data SudokuTwins =
SudokuTwins {
board :: Board,
areas::
Areas,
cellToAreas :: CellToAreas
} deriving
(Show)
This is almost a
copy of Soduku9x9 (right side of the =)
How can I express
the fact that all sudoku solvers use the same recordtype? Can I make a type
of the record structure {board:: Board.... } and use it in the constructor
function or can I incorperate the recordtype in the class or
......?
Kees