假设我有以下数据类型
data Number = Positive Integer | Negative Integer
deriving (Eq, Show)
我有一个函数定义(请注意,我无法更改此定义,或以任何方式解决它。我必须使用嵌套列表并以某种方式修改它)
removePos :: [[Number]] -> [[Number]]
所以我们有一个嵌套的 Number 列表。一个例子是
[[Positive 1, Negative 1], [Positive 2, Negative 2, Positive 1], [Positive 1]]
如何编写removePos,以便删除嵌套列表中包含正x的所有列表,其中x是特定整数?该函数本质上是查看第一个列表中的第一个元素,如果它是正数,则删除包含正数 x 的所有列表。
本质上,如果我们看一下上面的示例,输出将是
[[]]
请注意,用户执行以下函数调用
removePos [[Positive 1, Negative 1], [Positive 2, Negative 2, Positive 1], [Positive 1]]
由于上面嵌套列表中的每个列表都包含 Positive 1,因此输出只是一个空嵌套列表(所有具有 Positive x 的列表都将被删除)。但是,如果第一个列表中的第一个元素为正 10,则输出将为
[[Positive 2, Negative 2, Positive 1], [Positive 1]]
(因为第一个列表将包含 [Positive 10, Negative 1],它将被删除)
有任何想法吗?
EDIT:
再举个例子,假设我有一个篮子,里面装着几碗水果。篮子是嵌套列表,碗是其中的列表。现在,我看看篮子里的东西。我检查第一个碗。我看着碗里的第一个水果,然后决定我不想吃任何碗里的那个水果。所以我扔掉所有装有那种水果的碗,然后把篮子还给你。