A Sudoku solver as described in Graham Hutton's Haskell course