1

我的任务是从一个项目列表中对哪些项目进行排序,哪些项目不包含在另一个列表中。

在这种情况下,它是不拥有银行帐户的 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 并执行一堆其他不同的测试,但没有用。

非常感谢您对此的任何帮助。

4

1 回答 1

2

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

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

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

而已。

于 2013-09-28T10:13:34.073 回答