【发布时间】:2012-12-31 05:01:42
【问题描述】:
我有两个列表。一个列表包含一些随机数据,另一个列表包含需要删除的第一个列表的索引。
例如,让我们考虑两个列表:
let a = [3,4,5,6,6,7,8]
let b = [1,3]
那么,结果输出应该是[3,5,6,7,8]。数字 4 和 6 被删除,因为它们分别位于索引位置 1 和 3。
我是 Haskell 的新手,因此很难找到解决方案。
更新:以下代码使其工作
import Data.List
dele :: Eq a => [a] -> [Int] -> [a]
dele [] _ = []
dele x [] = x
dele x (y:ys) = dele (delete (x !! y) x) ys
我只是想知道,有没有办法通过map/fold方式解决它?
【问题讨论】:
-
它是一种函数式编程语言,这意味着副作用和可变数据结构已被排除在外!任何解决方案都将涉及使用您想要的项目重新创建部分列表。
-
问题已更新。通过模式匹配使其现在可以工作。我想知道是否有更好的方法来解决这个问题?
-
您的解决方案并没有真正奏效。试试
dele [1,2,3,4,5,1] [5]。 -
@n.m.感谢您的指点 :)
标签: haskell