我编写了一个函数,该函数获取一个Int n和一个Chars数组,并将原始列表右移n个位置。示例:
shift 2 "abcdefg" = "fgabcde"
现在,我想在另一个函数中使用shift,该函数获取一个矩阵(字符列表列表)并返回一个矩阵,其中对于原始矩阵中的第i行,该行在i个条目中进行了移位。
例如:
shiftRows [['a','b','c'], ['a','b','c'], ['a','b','c']] = ["abc", "cab", "bca"]
我尝试了此功能:
shiftRows :: [[Char]] -> [[Char]]
shiftRows [[]] = [[]]
shiftRows matrix = (shiftRows (init matrix)) : shiftRows' ((length matrix) - 1) ([last matrix])
shiftRows' :: Int -> [Char] -> [Char]
shiftRows' n [] = []
shiftRows' n list = shift n list
我在此功能中的用途是开始移动最后一个列表,然后再移动...之前的列表(依此类推)。它不会编译。这是错误:
我想咨询我的语法有什么问题。
谢谢。