我很难理解数独解算器的一部分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
这里会发生什么?简单的解释会很有帮助。