如果我有一个矩阵作为行列表[[1,2,3],[4,5,6]],我想返回第一列,[1,4].我是Haskell的绝对初学者,我甚至不知道如何处理嵌套列表.
以下代码将完成这项工作:
map head [[1,2,3],[4,5,6]]
Run Code Online (Sandbox Code Playgroud)
map是haskell(和其他函数式编程语言)中最有用的函数之一.给定列表[a,b,c,d]和函数f,map f [a,b,c,d]将返回列表[f a, f b, f c, f d].该head函数提取列表的第一个元素.这就是为什么
map head [[1,2,3],[4,5,6]] ->
[head [1,2,3], head [4,5,6]] ->
[1,4]
Run Code Online (Sandbox Code Playgroud)
更一般地说:
col :: Int -> [[a]] -> [a]
col n = map (head . drop n)
Run Code Online (Sandbox Code Playgroud)
请记住,如果n大于或等于您提供的任何列表的长度,则会失败.