【问题标题】:Haskell sum of generated listHaskell 生成列表的总和
【发布时间】:2015-01-03 11:18:14
【问题描述】:

嗨,我对 haskell 很陌生,我想用质数制作一个程序。 使用下面的代码,我将 2 个整数之间的所有素数放在一个列表中,现在我想对生成的列表的所有素数求和并将其显示为答案。

primesR :: Integral a => a -> a -> [a]
primesR a b = takeWhile (<= b) $ dropWhile (< a) $ sieve [2..]
  where sieve (n:ns) = n:sieve [ m | m <- ns, m `mod` n /= 0 ]

我没有找到任何生成列表总和的示例。有谁知道我如何在代码中管理这个?

谢谢

【问题讨论】:

    标签: list haskell sum


    【解决方案1】:

    只需使用sum 函数,如下所示:

    primesR :: Integral a => a -> a -> a
    primesR a b = sum $ takeWhile (<= b) $ dropWhile (< a) $ sieve [2..]
           where sieve (n:ns) = n:sieve [ m | m <- ns, m `mod` n /= 0 ]
    

    请注意,您需要将函数签名从 Integral a =&gt; a -&gt; a -&gt; [a] 更改为 Integral a =&gt; a -&gt; a -&gt; a,因为求和的结果是单个值,而不是列表。

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 2016-06-14
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      相关资源
      最近更新 更多