我有这种类型Mat a = [[a]]
来表示haskell中的矩阵。 我必须写一个旋转矩阵的功能,对于如[[1,2,3],[0,4,5]
,[0,0,6]]
将成为[[3,5,6],[2,4,0],[1,0,0]]
所以我做了这个:在Haskell中旋转矩阵
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任何帮助。
当你修好你的功能之后,你可能会考虑如何从现有的功能中构建出来,而不需要显式的递归。 (破坏者:base64解码'cm90YXRlTGVmdCA9IHJldmVyc2UgLiB0cmFuc3Bvc2UK'。) –