我是haskell的新用户,想要一些关于如何创建一个函数的想法,该函数可以将multilist列表的每个头部元素添加到新的multilist中,然后移动到第二列等。到目前为止,我只知道如何为第一列写一个函数:inverted (xss) = map head xss
如何使它去,直到它与多列表的每一列?
我们可以直接编写这个函数,并且您已经有了完全正确的开始思路。先取正面,然后递归调用。
假设所有的列表长度相同,
inverted :: [[a]] -> [[a]]
inverted [] = [] -- Degenerate case
inverted xss
| null (head xss) = []
| otherwise = map head xss : inverted (map tail xss)
碰巧的是,这个函数已经在标准库中了:它被称为Data.List.transpose
,它完全可以满足您的要求。