我想知道如何在一个函数中获取列表中的多个元素
例如,如果我想从 list 中获取元素 1 2 3 和 4 a,我就必须输入a!!0 ++ a!!1 ++ a!!2 ++ a!!3. 这会占用大量空间,尤其是当列表名称超过一个字符时。所以我想知道我是否可以做类似的事情a!![0,1,2,3]并以更短的方式获取所有这些元素。谢谢。
您可以使用映射来查找列表中的所有项目,因此:
map (a !!) [0,1,2,3]
Run Code Online (Sandbox Code Playgroud)
但是,如果您对前四项感兴趣,您可以使用take :: Int -> [a] -> [a]:
take 4 aRun Code Online (Sandbox Code Playgroud)
特别是因为通过索引查找(with (!!))在 Haskell 中不是常见操作:这是不安全的,因为不能保证索引在边界内。大多数列表处理是通过take、drop、sum、foldr等函数完成的。