Haskell - 将结果定义为列表并返回null

时间:2015-10-06 13:31:40

标签: list haskell return perfect-numbers

First Report Data         Second Report Data
----------------         -------------------   

DitrictID           DistrictID CityID CityName   
3                     6         2      XYZ
14                    3         1      pqr 
5                     6         3      zzz
6

好的,第一次尝试使用Haskell,只有新手Java知识导致了一些问题。 我试图做的是将函数listX n的结果定义为名为xs的列表。 我的想法是程序会抓取从1到n的每个数字,并检查它是否等于其正除数的总和。 显然,我已经失败了,并且需要帮助,对我未理解的概念的指示非常感激。

1 个答案:

答案 0 :(得分:3)

您的主要问题似乎是您仍然认为必要(使用insert) - ()也是值单位 - 您可能想写{{1 (而空列表)相反 - 但这里的[]仍然是完全未定义的,所以你也必须解决这个问题(而且我不知道如何诚实)。

完美数字

我认为我可以在那里看到一个基本的想法,我认为解决这个问题的最佳方法是全面列表理解(因为你似乎很了解它们) - 这是一个应该有效的版本: / p>

xs

正如您所看到的,我对此进行了一些更改 - 首先,如果它们可能是完美的,我会检查listX n = [ x | x <- [1..n], sum [ y | y <- [1..x-1], x `mod` y == 0] == x] x的所有1 - 我这样做是通过总结全部来检查适当的除数并检查总和是否等于nx部分的工作) - 如果你不知道这是有效的,因为你可以添加警卫列表推导(sum [...] == x过滤掉sum [..] == x的所有值,这是真的。)

更好的版本

为了使其更具可读性(并将问题分开),我建议以这样的方式编写:

x