分隔子列表的问题

时间:2013-09-27 23:04:28

标签: list haskell map filter

我被赋予了一项任务,可以从项目列表中对哪些项目进行排序 不包含在其他列表中。

在这种情况下,它的NI号码没有银行账户。

类型如下:

    type NI = Int
    type Age = Int
    type Balance = Int
    type Person = (NI, Age, Balance)
    type Bank = [Person]
    type Market = [Bank]
    type Pop = [NI]

bankFree功能如下:

    bankFree :: Pop -> Market -> Pop
    bankFree a b = filter (map op3 b) a
        where 
            op3 [(x, y, z)] = x

我完全不知道从哪里开始。我知道我必须处理Pop列表才能从该列表中删除map操作中的元素。我试图适应notElem并执行一系列其他不同的测试,但没有用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

编程的诀窍在于弄清楚如何将复杂问题分解为更简单的问题。如果你以相反的方式练习,可能更容易获得这种直觉 - 构建从解决方案到简单问题的复杂问题的解决方案。这样,您就可以感受到最有效地简化问题的方式。

这个问题很容易分解。让我们从一个最简单的问题开始,向上扩展:

  • 你可以为一个NI和一个人解决这个问题吗?这是一个功能
  • 你可以为一个NI和多个人(一个银行)扩展这个解决方案吗?这是另一个功能 - 可能使用前一个
  • 你可以为一个NI和许多银行(一个市场)扩展这个解决方案吗?还有另一个功能 - 可能使用前一个功能
  • 你可以将这个解决方案应用于所有NI(一个Pop)吗?还有一个功能 - 可能使用前一个功能

就是这样。