我很難理解數獨解算器的一部分this。我不明白擴展函數的工作原理。在Haskell中展開數獨求解器的功能
expand :: Matrix Choices -> [Matrix Choices]
expand m =
[rows1 ++ [row1 ++ [c] : row2] ++ rows2 | c <- cs]
where
(rows1,row:rows2) = break (any (not . single)) m
(row1,cs:row2) = break (not . single) row
這裏會發生什麼?簡單的解釋會很有幫助。