我有这种类型Mat a = [[a]]
来表示haskell中的矩阵.我必须编写一个旋转矩阵的函数,例如[[1,2,3],[0,4,5]
,我[0,0,6]]
将[[3,5,6],[2,4,0],[1,0,0]]
这样做:
rotateLeft :: Mat a->Mat a rotateLeft [[]] = [] rotateLeft (h:t) = (map last (h:t)):(rotateLeft (map init (h:t)))
但输出是
[[3,5,6],[2,4,0],[1,0,0],[*** Exception: Prelude.last: empty list
我不知道在基本情况下放什么来避免这种异常.Apreciate任何帮助.
我赶时间老了.我这样做(导入Data.List
)
rotl :: [[x]] -> [[x]] rotl = transpose . map reverse